Migrer à partir du boîtier de mégadonnées (BDA) ou du service de mégadonnées Cloud (BDCS)

Découvrez comment migrer d'Oracle Big Data Appliance ou de Big Data Cloud Service vers le service de mégadonnées

Note

Nous vous recommandons de conserver vos grappes Big Data Appliance ou Big Data Cloud Service (à l'état arrêté) pendant au moins trois mois en tant que sauvegarde, même après la migration vers OCI.

Migration de ressources à l'aide de WANdisco LiveData Migrator

Assurez-vous que le port 8020 s'ouvre à destination.

Pour plus d'informations sur WANdisco LiveData Migrator, sélectionnez ici.

Pour migrer des ressources à l'aide de WANdisco LiveData Migrator, procédez comme suit :

  1. Installez l'outil de migration LiveData sur n'importe quelle périphérie de la grappe source en exécutant les commandes suivantes :
    wget https://wandisco.com/downloads/livedata-migrator.sh
     
    chmod +x livedata-migrator.sh && ./livedata-migrator.sh
     
    service livedata-migrator status
    service hivemigrator status
    service livedata-ui status
  2. Une fois l'installation et la configuration de l'outil de migration LiveData terminées, accédez à l'interface utilisateur et créez votre compte d'utilisateur. L'URL de l'interface utilisateur est la suivante :
    http://<LDM-Installation-Host.com>:8081
  3. Effectuez les opérations suivantes pour migrer des données :
    1. Configurer le système de fichiers source.
      Pour ajouter un système de fichiers source, dans le tableau de bord de l'outil de migration LiveData, procédez de la façon suivante :
      1. Dans le panneau Produits, sélectionnez l'instance appropriée.
      2. Dans la page Configuration du système de fichiers, sélectionnez Ajouter un système de fichiers source.
    2. Configurez le système de fichiers cible.
      Pour ajouter un système de fichiers cible, dans le tableau de bord de l'outil de migration LiveData, procédez de la façon suivante :
      1. Dans le panneau Produits, sélectionnez l'instance appropriée.
      2. Dans la page Configuration du système de fichiers, sélectionnez Ajouter un système de fichiers cible.
      3. Sélectionnez Apache Hadoop pour la cible en tant que grappe BDS et indiquez le chemin du système de fichiers par défaut. Assurez-vous que la source et la cible se connectent à la destination sur le port 8020.
    3. Créez un mappage de chemin.
      Le mappage de chemin permet de stocker les données migrées à un emplacement par défaut équivalent sur la cible. Pour créer des mappages de chemin à l'aide de l'interface utilisateur, procédez comme suit :
      1. Dans la liste Produits du tableau de bord, sélectionnez l'instance de l'outil de migration LiveData pour laquelle vous voulez créer un mappage de chemin.
      2. Dans le menu Migrations, sélectionnez Mappages de chemins.
      3. En haut à droite de l'interface, sélectionnez le bouton Ajouter un nouveau chemin.
    4. Créer une migration.
      Les migrations transfèrent les données existantes de la source définie vers une cible. Pour créer une nouvelle migration à partir de l'interface utilisateur, procédez comme suit :
      1. Entrez un nom pour la migration.
      2. Dans vos systèmes de fichiers, sélectionnez une source et une cible.
      3. Sélectionnez le chemin dans votre système de fichiers source à migrer. Utilisez le navigateur de dossiers et sélectionnez le nom du chemin d'accès à migrer. Sélectionnez le dossier gris à côté du nom d'un chemin d'accès pour voir ses sous-répertoires.
  4. Migrez les métadonnées.
    Pour migrer les métadonnées :
    1. Connecter les magasins de métadonnées.
      Hive Migrator, fourni avec LiveData Migrator, vous permet de transférer les métadonnées d'un magasin de métadonnées source vers des magasins de métadonnées cibles. Connectez-vous aux magasins de métadonnées en créant des agents de métadonnées locaux ou distants.
    2. Créez une migration de métadonnées.
      Pour créer une migration de métadonnées, procédez comme suit :
      1. Dans le tableau de bord, sélectionnez Ajouter une migration Hive.
      2. Entrez un nom pour la migration.
      3. Sélectionnez les agents source et cible.
      4. Créez un modèle de base de données et un modèle de table basés sur le langage LDD Hive qui correspondent aux bases de données et aux tables à migrer.

        Par exemple, l'utilisation de test* pour le modèle de base de données correspond à tout nom de base de données qui commence par un test, par exemple test01, test02, test03.

      5. Sélectionnez Créer.

Migration de ressources à l'aide de BDR

Sauvegarder les données BDA dans le service Oracle Object Storage

Avant de sauvegarder votre grappe Oracle Big Data Appliance, assurez-vous des éléments suivants :

  • Vous disposez d'un accès administrateur à votre grappe de boîtier de mégadonnées.

    • Vous avez besoin des données d'identification de l'administrateur pour Cloudera Manager.

    • Vous avez besoin d'un utilisateur administrateur Hadoop avec un accès complet aux données HDFS et aux métadonnées Hive qui sont en cours de sauvegarde dans le service Oracle Object Storage.

  • Configurez le magasin d'objets Oracle Cloud Infrastructure dans lequel les données HDFS sont copiées. Pour plus d'informations, voir Aperçu du stockage d'objets.

  • Configurez votre location Oracle Cloud Infrastructure avec les détails suivants

    • L'administrateur a créé un utilisateur dans Oracle Cloud Infrastructure et l'a ajouté aux groupes requis.

    • L'utilisateur dispose d'une autorisation et peut accéder à la console Oracle Cloud Infrastructure.

    • L'utilisateur dispose d'une autorisation et peut créer un seau. Pour plus d'informations, voir Permettre aux administrateurs du stockage d'objets de gérer les seaux et les objets dans Politiques communes.

    • L'utilisateur peut inspecter la configuration du magasin d'objets Oracle Cloud Infrastructure.

Pour sauvegarder un cluster BDA, procédez comme suit :

  1. Créer un seau dans le stockage d'objets Oracle.

    Les seaux sont utilisés pour stocker et organiser les données. Le compartiment que vous créez est le conteneur des données sauvegardées dans le service Oracle Object Storage. Pour plus d'informations sur la gestion du stockage d'objets Oracle, voir Aperçu du stockage d'objets.

    1. Connectez-vous à la console OCI.
    2. Ouvrez le menu de navigation et sélectionnez Stockage. Sous Stockage d'objets, sélectionnez Seaux.
    3. Sélectionnez Créer un seau.
    4. Créez un seau avec son nom en majuscules. Par exemple, BDA-MIGRATION. Le connecteur Hadoop S3 ne fonctionne que si le nom du seau est en majuscules. Créez le seau dans votre région principale, que la grappe se trouve ou non dans une autre région. Pour plus d'informations sur les seaux, voir Ajout de données dans le stockage d'objets.
  2. Créer une clé secrète de client.
    Une clé secrète est requise pour établir une connexion sécurisée de votre grappe Hadoop au service de stockage d'objets d'Oracle. La clé est créée pour un utilisateur doté de privilèges permettant d'effectuer des mises à jour du seau cible.
    1. Connectez-vous à la console OCI.
    2. Ouvrez le menu de navigation et sélectionnez Identité et sécurité. Sous Identité, sélectionnez Utilisateurs.
    3. Localisez l'utilisateur dans la liste, puis sélectionnez son nom pour voir les détails.
    4. Sur le côté gauche de la page, sélectionnez Clés secrètes du client.
    5. Sélectionnez Générer une clé secrète.
    6. Entrez une description conviviale pour la clé (telle que mysecretkey) et sélectionnez Générer une clé secrète.
    7. Copiez la clé secrète immédiatement, car vous ne pouvez pas extraire la clé secrète après avoir fermé la boîte de dialogue (pour des motifs de sécurité).
  3. Créez un compte externe dans Cloudera Manager pour la sauvegarde.

    Utilisez la clé d'accès et la clé secrète pour créer un compte externe dans Cloudera Manager. Assurez-vous d'utiliser les clés d'un utilisateur d'Oracle Cloud Infrastructure qui a accès au seau cible dans le service Oracle Object Storage.

    1. Connectez-vous à Cloudera Manager sur la grappe source.
    2. Allez à Administration et sélectionnez Comptes externes.
    3. Dans l'onglet AWS Credentials, sélectionnez Add Access Key Credentials et indiquez les informations suivantes :
      • Name (Nom) : Indiquez un nom pour les données d'identification. Par exemple, oracle-credential.

      • ID clé d'accès AWS : Spécifiez un nom pour la clé d'accès. Par exemple, myaccesskey.

      • Clé secrète AWS : Entrez la valeur de la clé secrète que vous avez notée lorsque vous avez créé une clé secrète client.

    4. Sélectionnez Ajouter. La page Modifier S3Guard s'affiche. Ne sélectionnez pas Activer S3Guard.
    5. Sélectionnez enregistrer.
  4. Mettez à jour core-site.xml avec les données d'identification du service de stockage d'objets.

    Voici un exemple de mises à jour de coeur-site.xml qui doivent être ajoutées pour se connecter au stockage d'objets lors de la sauvegarde des données. Après la mise à jour du coeur-site.xml sur les grappes source et de destination, enregistrez les modifications et redémarrez HDFS. Assurez-vous que le répertoire intermédiaire nommé /tmp/s3-temp existe sur les noeuds de grappe locaux de la source et de la destination.

    <property>
        <name>fs.s3a.secret.key</name>
        <value><SECRET-KEY></value>
      </property>
      <property>
        <name>fs.s3a.access.key</name>
        <value><ACCESS-KEY></value>
      </property>
      <property>
        <name>fs.s3a.bucket.<BUCKET-NAME>.endpoint</name>
        <value>https://<TENANCY>.compat.objectstorage.us-ashburn-1.oraclecloud.com</value>
      </property>
      <property>
        <name>fs.s3a.acl.default</name>
        <value>Private</value>
      </property>
      <property>
        <name>fs.s3a.path.style.access</name>
        <value>true</value>
      </property>
      <property>
        <name>fs.s3a.paging.maximum</name>
        <value>1000</value>
      </property>
      <property>
        <name>fs.s3a.buffer.dir</name>
        <value>/tmp/s3-temp</value>
      </property>
  5. Créez un programme de réplication Hive pour la sauvegarde.

    Pour sauvegarder les données et les métadonnées Hive de votre grappe Hadoop dans le service Oracle Object Storage, vous devez créer un programme de réplication Hive dans Cloudera Manager.

    Avant d'exécuter la réplication, nous vous recommandons d'activer les instantanés pour le répertoire /user/hive/warehouse. L'activation des instantanés garantit que toute modification apportée aux fichiers pendant le processus de réplication n'entraîne pas d'échec de réplication. Pour plus d'informations, voir Utilisation d'instantanés avec réplication dans la documentation Cloudera.

    Pour créer un programme de réplication Hive, procédez comme suit :

    1. Connectez-vous à Cloudera Manager sur la grappe source.
    2. Activez les instantanés pour le répertoire /user/hive/warehouse.
      1. Dans la liste de services située à gauche, sélectionnez HDFS.
      2. Sélectionnez l'onglet File Browser en haut de la page.
      3. Naviguez jusqu'au répertoire /user/hive/warehouse.
      4. Activer les instantanés.
    3. Créez le programme de réplication Hive.
      1. Allez à Backup et sélectionnez Replication Schedules.
      2. Sélectionnez Create Schedule et sélectionnez Hive Replication.
      3. Spécifiez les détails suivants pour le programme de réplication :
        • Nom : Entrez un nom. Par exemple, hive-rep1.

        • Source : Sélectionnez les données d'identification que vous avez définies précédemment. Par exemple, oracle-credential.

        • Destination : Sélectionnez Hive (nom de la grappe).

        • Chemin racine du nuage : Indiquez l'emplacement racine où vous souhaitez sauvegarder vos données. Par exemple, s3a://BDCS-BACKUP/.

        • Destination HDFS : Laissez ce champ vide, car vous effectuez une sauvegarde vers le stockage d'objets.
        • Bases de données : Sélectionnez Répliquer tout.

        • Option de réplication : Sélectionner les métadonnées et les données.

        • Schedule : Sélectionnez Immediate.

        • Run As Username (Exécuter en tant que nom d'utilisateur) : Indiquez un utilisateur ayant accès aux données et aux métadonnées qui seront sauvegardées. Il s'agit généralement d'un superutilisateur Hadoop et d'un administrateur Sentry.

          Note

          Si vous n'avez pas d'utilisateur ayant accès aux données et métadonnées requises, créez-en un. N'utilisez pas le superutilisateur hdfs pour cette étape.
          Note

          Si le chiffrement Hadoop est activé, qui stocke les données chiffrées dans HDFS, assurez-vous de l'exécuter en tant qu'utilisateur disposant d'un accès de décryptage à la zone de chiffrement.
    4. Sélectionnez Enregistrer le programme. Vous pouvez surveiller la réplication dans la page Replication Schedules.
  6. Vérifiez la configuration de la grappe source.

    Notez tous les paramètres de configuration personnalisés de votre grappe source. Vous devrez peut-être effectuer des mises à jour similaires à votre grappe du service de mégadonnées. Cela inclut l'installation de produits tiers, des fichiers JAR supplémentaires, des mises à jour de la configuration Hadoop (telles que les fichiers JAR auxiliaires pour Hive), etc.

    L'API Cloudera Manager vous permet de voir toutes les modifications apportées à la configuration de grappe par défaut. Téléchargez le déploiement de grappe et vérifiez la sortie pour comprendre les modifications qui peuvent devoir être appliquées au service de mégadonnées.

    Utilisez l'URL suivante pour vous connecter à Cloudera Manager et télécharger le déploiement du cluster :

    https://your-CM-host:7183/api/v18/cm/deployment

    Vous obtenez la configuration de la grappe au format JSON, répertoriant tous les remplacements effectués sur la grappe. Parcourez le fichier et vérifiez s'il existe des remplacements par défaut. Par exemple, recherchez hive.aux.jars.path pour voir la liste des fichiers JAR d'application requis pour exécuter vos interrogations Hive. Copiez ces fichiers dans votre grappe du service de mégadonnées et effectuez une mise à jour équivalente à hive.aux.jars.path.

Restaurer la sauvegarde BDA dans la grappe du service de mégadonnées

Avant de restaurer votre grappe Oracle Big Data Appliance dans Oracle Big Data Service, vous devez disposer des éléments suivants :

Restaurer la sauvegarde BDA

Pour restaurer une sauvegarde BDA, procédez comme suit :
  1. Connectez-vous à Cloudera Manager sur la grappe du service de mégadonnées.
    1. Connectez-vous à https://your-utility-node-1:7183, où your-utility-node est l'adresse IP publique ou privée du noeud d'utilitaire. Si la haute disponibilité est utilisée, il s'agit du premier noeud d'utilitaire du cluster. Si la haute disponibilité n'est pas utilisée, il s'agit du seul noeud d'utilitaire.
    2. Entrez le nom d'utilisateur admin et le mot de passe spécifiés lors de la création de la grappe.
  2. Créez un compte externe dans Cloudera Manager pour la restauration.

    Utilisez la clé d'accès et la clé secrète pour créer un compte externe dans Cloudera Manager. Vous configurez un compte externe pour permettre à la grappe d'accéder aux données du service Oracle Object Storage.

    Pour créer un compte externe, procédez comme suit :
    1. Connectez-vous à Cloudera Manager sur la grappe Oracle Big Data Service.
    2. Allez à Administration et sélectionnez Comptes externes.
    3. Dans l'onglet AWS Credentials, sélectionnez Add Access Key Credentials et indiquez les informations suivantes :
      • Name (Nom) : Indiquez un nom pour les données d'identification. Par exemple, oracle-credential.

      • ID clé d'accès AWS : Spécifiez un nom pour la clé d'accès. Par exemple, myaccesskey.

      • Clé secrète AWS : Entrez la valeur de la clé secrète générée précédemment lorsque vous avez créé une clé secrète de client.

    4. Sélectionnez Add. La page Modifier S3Guard s'affiche. Ne sélectionnez pas Activer S3Guard.
    5. Sélectionnez Save.
    6. Dans la page qui s'affiche, activez l'accès à la grappe à S3 :
      1. Sélectionnez Enable pour le nom de la grappe.
      2. Sélectionnez la stratégie More Secure Credential et cliquez sur Continue.
      3. Dans la page Restart Dependent Services, sélectionnez Restart Now, puis Continue. Les détails du redémarrage s'affichent. Le redémarrage de la grappe peut prendre quelques minutes.
      4. Après le redémarrage, sélectionnez Continue, puis Finish.
  3. Mettez à jour le point d'extrémité s3a.
    Note

    Ignorez cette étape si vous avez déjà mis à jour le fichier core-site.xml.

    L'URI de point d'extrémité permet à votre grappe Hadoop de se connecter au magasin d'objets qui contient vos données sources. Indiquez cet URI dans Cloudera Manager.

    Pour mettre à jour le point d'extrémité, procédez comme suit :

    1. Connectez-vous à Cloudera Manager sur la grappe Oracle Big Data Service.
    2. Dans la liste de services à gauche, sélectionnez S3 Connector.
    3. Sélectionnez l'onglet Configuration.
    4. Mettez à jour la propriété de point d'extrémité S3 par défaut avec les éléments suivants :
      https://your-tenancy.compat.objectstorage.your-region.oraclecloud.com

      Par exemple, https://oraclebigdatadb.compat.objectstorage.us-phoenix-1.oraclecloud.com

    5. Enregistrer les modifications.
    6. Mettez à jour la grappe :
      1. Accédez à votre grappe, sélectionnez Actions, sélectionnez Deploy Client Configuration, puis confirmez l'action.
      2. Lorsque vous avez terminé, sélectionnez Close.
    7. Redémarrez la grappe (Sélectionnez Actions et sélectionnez Redémarrer).
  4. Créez un programme de réplication HDFS pour la restauration.

    Restaurez les données HDFS sauvegardées dans le service de stockage d'objets d'Oracle. Restaurez les données HDFS dans le répertoire racine du système de fichiers HDFS pour mettre en miroir la source.

    Si Hive contient des données externes saisies dans HDFS et non gérées par Hive, créez le programme de réplication HDFS avant de créer le programme de réplication Hive.

    Pour créer un programme de réplication HDFS :

    1. Connectez-vous à Cloudera Manager sur la grappe Oracle Big Data Service.
    2. Créez un programme de réplication HDFS :
      1. Allez à Backup et sélectionnez Replication Schedules.
      2. Sélectionnez Create Schedule et sélectionnez HDFS Replication.
      3. Spécifiez les détails du programme de réplication :
        • Nom : Entrez un nom. Par exemple, hdfs-rep1.

        • Source : Sélectionnez les données d'identification que vous avez définies précédemment. Par exemple, oracle-credential.

        • Source Path (Chemin source) : Indiquez l'emplacement racine où vos données ont été sauvegardées. Par exemple, s3a://BDA-BACKUP/.

        • Destination : Sélectionnez HDFS (nom de la grappe).

        • Chemin de destination : Entrez /

        • Schedule : Sélectionnez Immediate.

        • Run As Username (Exécuter en tant que nom d'utilisateur) : Spécifiez un utilisateur ayant accès aux données et métadonnées en cours de restauration. Il s'agit généralement d'un superutilisateur Hadoop et d'un administrateur Sentry.
          Note

          Si vous n'avez pas d'utilisateur ayant accès aux données et métadonnées requises, vous devez en créer une. N'utilisez pas le superutilisateur hdfs pour cette étape.
          Note

          : Si le chiffrement Hadoop est utilisé, assurez-vous que le répertoire de destination est créé avec les clés appropriées et que la commande est exécutée en tant qu'utilisateur disposant d'un accès de chiffrement.
    3. Sélectionnez Save Schedule. Vous pouvez surveiller la réplication dans la page Replication Schedules.
  5. Créez un programme de réplication Hive pour la restauration.

    Pour restaurer les données et les métadonnées Hive du service Oracle Object Storage dans la grappe Hadoop, créez un programme de réplication Hive dans Cloudera Manager.

    Pour créer un programme de réplication Hive, procédez comme suit :

    1. Connectez-vous à Cloudera Manager sur la grappe Oracle Big Data Service.
    2. Créez le programme de réplication :
      1. Allez à Backup et sélectionnez Replication Schedules.
      2. Sélectionnez Create Schedule et sélectionnez Hive Replication.
      3. Spécifiez les détails du programme de réplication Hive :
        • Nom : Entrez un nom. Par exemple, hive-rep1.

        • Source : Indiquez les données d'identification que vous avez définies précédemment. Par exemple, oracle-credential.

        • Destination : Sélectionnez Hive (nom de la grappe).

        • Chemin racine du nuage : Sélectionnez l'emplacement racine où vous avez sauvegardé vos données. Par exemple, s3a://BDA-BACKUP/.

        • Chemin de destination HDFS : Entrez /

        • Bases de données : Sélectionnez Répliquer tout.

        • Option de réplication : Sélectionner les métadonnées et les données.

        • Schedule : Sélectionnez Immediate.

        • Run As Username (Exécuter en tant que nom d'utilisateur) : Spécifiez un utilisateur ayant accès aux données et métadonnées qui seront restaurées. Il s'agit généralement d'un superutilisateur Hadoop et Hive et d'un administrateur Sentry.
          Note

          Si vous n'avez pas d'utilisateur ayant accès aux données et métadonnées requises, vous devez en créer une. N'utilisez pas le superutilisateur hdfs pour cette étape.
    3. Sélectionnez Save Schedule. Vous pouvez surveiller la réplication dans la page Replication Schedules.
Vérifier les migrations de service

Spark

Vérifiez la tâche spark et mettez-la à jour en fonction des détails de la nouvelle grappe.

Fil

Pour utiliser les mêmes noms de file d'attente à partir du cluster source, procédez comme suit :
  • Dans le cluster source, copiez Cloudera Manager. (Accédez à YARN, sélectionnez Configuration et sélectionnez Fair Scheduler Allocations (Deployed) content to the target cluster's same position.)
  • Si vous ne pouvez pas copier, créez la file d'attente manuellement. (Dans Cloudera Manager, allez dans Clusters et sélectionnez Dynamic Resource Pool Configuration.)

Sentry

  • Migrez les données HDFS et les métadonnées Hive à l'aide de BDR, Wandisco ou Hadoop Distcp.
  • Pour exporter les données de sentinelle à partir de la base de données de sentinelle source et les restaurer dans la base de données de sentinelle de destination, vous avez besoin de l'outil de migration méta Sentry. Communiquez avec Oracle Support pour la note MOS ID document 2879665.1 pour les outils de migration de métadonnées Sentry.

Migration de ressources à l'aide de l'outil Distcp

Vous pouvez également migrer des données et des métadonnées à partir de BDA et les importer dans le service de mégadonnées à l'aide de l'outil Distcp. Distcp est un outil à code source libre qui peut être utilisé pour copier des jeux de données volumineux entre des systèmes de fichiers répartis dans et entre des grappes.

Préparation de la grappe BDA ou BDCS

Pour préparer la grappe BDA ou BDCS à exporter, procédez comme suit :

  1. Définissez le service HDFS en mode de maintenance pour bloquer les alertes et les opérations en masse. Pour plus d'informations, voir Définir le mode de maintenance pour un service.
  2. Connectez-vous à la grappe BDA ou BDCS au moyen de SSH en tant qu'utilisateur opc. Pour plus d'informations, voir Connexion à un noeud de grappe au moyen de SSH.
  3. Exécutez les commandes suivantes pour définir le service HDFS en mode sans échec :
    $ sudo su hdfs -c 'hdfs dfsadmin -safemode get'
    Safe mode is OFF
     
    $ sudo su hdfs -c 'hdfs dfsadmin -safemode enter'
    Safe mode is ON
  4. Effectuez les opérations suivantes :
    1. En tant qu'utilisateur root, copiez votre clé privée OCI (par exemple : ~/.oci/oci_api_key.pem) dans le répertoire /home/opc/.oci de la grappe BDA ou BDCS.
      sudo su -
      cp <private-key> /home/opc/.oci/oci_api_key.pem
    2. Modifiez les autorisations du fichier de clé privée en lecture seule.
      chmod 444 /home/opc/.oci/oci_api_key.pem
    3. Remplacez la propriété du fichier de clé PEM privée par l'utilisateur hdfs.
      chown -R hdfs:hdfs /home/opc/.oci/oci_api_key.pem
    4. Créez un répertoire nommé data auquel l'utilisateur HDFS peut accéder.
    5. Copiez la clé privée OCI du répertoire /home/opc/.oci vers le répertoire /data.
      cp /home/opc/.oci/oci_api_key.pem /data
    6. En tant qu'utilisateur root, remplacez le fichier de clé privée dans le répertoire /data par Lecture seule.
      chmod 444 /data/oci_api_key.pem
    Si la grappe BDA ou BDCS comporte plusieurs noeuds, assurez-vous que la clé privée OCI est disponible dans tous les noeuds ayant le même chemin. Vous pouvez utiliser l'utilisateur otools pour copier des fichiers vers tous les noeuds. Toutefois, assurez-vous que le fichier est lisible par otools. Après avoir copié les fichiers sur tous les noeuds, rétablissez les autorisations d'origine.

    Pour installer la clé privée OCI sur tous les hôtes, en tant qu'utilisateur otools, exécutez les commandes suivantes dans la séquence indiquée pour chaque hôte :

    sudo su - otools
    ssh <hostname> sudo mkdir /data
    scp oci_api_key.pem <hostname>:/data
    ssh <hostname> sudo chown hdfs:hdfs /data/oci_api_key.pem
    ssh <hostname> sudo chmod 444 /data/oci_api_key.pem
Exportation de données à partir de HDFS

Pour exporter des données à partir de HDFS, procédez comme suit :

  1. Configurez l'outil distcp. L'outil distcp nécessite un pilote oci-hdfs mis à jour. Par conséquent, vous devez télécharger le pilote sur l'hôte où l'outil distcp doit être exécuté. Pour télécharger le pilote, utilisez les commandes suivantes :
    1. Exécutez les commandes suivantes pour créer un répertoire nommé hdfsjar sous /data et naviguer jusqu'au répertoire.
      mkdir -p /data/hdfsjars
      cd /data/hdfsjars
    2. Téléchargez oci-hdfs.zip.
      wget https://github.com/oracle/oci-hdfs-connector/releases/download/v2.7.7.0/oci-hdfs.zip
    3. Extrayez le fichier oci-hdfs.zip.
      1. Décompressez le fichier dans le répertoire /data/hdfsjars/lib.
        unzip oci-hdfs.zip lib/oci-hdfs-full-2.7.7.0.jar
      2. Déplacez lib/oci-hdfs-full-2.7.7.0.jar vers le répertoire de travail courant, c'est-à-dire /data/hdfsjar.
        mv lib/oci-hdfs-full-2.7.7.0.jar .
      3. Supprimez le répertoire lib et le fichier oci-hdfs.zip.
        rm -rf lib/ oci-hdfs.zip
  2. Définissez les variables d'environnement pour qu'elles pointent vers oci-hdfs-full-2.7.7.0.jar.
    export LIBJARS=/data/hdfsjars/oci-hdfs-full-2.7.7.0.jar
  3. (Facultatif) Configurez le mandataire en définissant la variable suivante avec sun.net.inetaddr.ttl.
    export DISTCP_PROXY_OPTS="-Dhttps.proxyHost=<proxy-host> -Dhttps.proxyPort=<proxy-port> -Dsun.net.inetaddr.ttl=60"
    
  4. Testez la configuration en répertoriant le contenu dans le conteneur de stockage OCI.
    hadoop fs -Dfs.oci.client.auth.fingerprint=<fingerprint> \
    -Dfs.oci.client.auth.pemfilepath=<oci_pem_key> \
    -Dfs.oci.client.auth.passphrase=<passphrase> \
    -Dfs.oci.client.auth.tenantId=<OCID forTenancy> \
    -Dfs.oci.client.auth.userId=<OCID forUser> \
    -Dfs.oci.client.hostname=<HostName. Example: https://objectstorage.us-phoenix-1.oraclecloud.com/> \
    -Dfs.oci.client.proxy.uri=http://<proxyhost>:<proxyport> \
    -ls oci://<bucket>@<namespace>/
  5. Pour copier toutes les données HDFS dans un répertoire spécifique du seau du magasin d'objets OCI, créez un répertoire sous le seau.
    hadoop fs -Dfs.oci.client.auth.fingerprint=<fingerprint> \
          -Dfs.oci.client.auth.pemfilepath=<oci_pem_key> \
          -Dfs.oci.client.auth.passphrase=<passphrase> \
          -Dfs.oci.client.auth.tenantId=<OCID for Tenancy> \
          -Dfs.oci.client.auth.userId=<OCID for User> \
          -Dfs.oci.client.hostname=<HostName. Example: https://objectstorage.us-phoenix-1.oraclecloud.com/> \
          -Dfs.oci.client.proxy.uri=http://<proxyhost>:<proxyport>  \
          -mkdir oci://<bucket>@<namespace>/<Dir>
  6. Exécutez les commandes suivantes pour vérifier que le répertoire est créé dans le magasin d'objets.
    hadoop fs -Dfs.oci.client.auth.fingerprint=<fingerprint> \
          -Dfs.oci.client.auth.pemfilepath=<oci_pem_key> \
          -Dfs.oci.client.auth.passphrase=<passphrase> \
          -Dfs.oci.client.auth.tenantId=<OCID forTenancy> \
          -Dfs.oci.client.auth.userId=<OCID forUser> \
          -Dfs.oci.client.hostname=<HostName>\
          -ls oci://<bucket>@<namespace>/
  7. Effectuez l'une des opérations suivantes pour exporter des données HDFS :
    • Utilisez hadoop fs -cp pour exporter des données HDFS d'une grappe de noeuds unique vers le magasin d'objets en tant qu'utilisateur HDFS.
      sudo su - hdfs
      hadoop fs -Dfs.oci.client.auth.fingerprint=<fingerprint> \
            -Dfs.oci.client.auth.pemfilepath=<oci_pem_key> \
            -Dfs.oci.client.auth.passphrase=<passphrase> \
            -Dfs.oci.client.auth.tenantId=<OCID for Tenancy> \
            -Dfs.oci.client.auth.userId=<OCID for User> \
            -Dfs.oci.client.hostname=<HostName> \
            -Dfs.oci.client.proxy.uri=http://<proxyhost>:<proxyport>  \
            -cp <hdfs-dir-to-copy> oci://<bucket>@<namespace>/<dir>/
    • Utilisez hadoop distcp pour exporter des données HDFS des grappes à plusieurs noeuds vers le magasin d'objets. Validez-le par rapport au répertoire spécifique. Par exemple, utilisez /user/oozie/ pour <hdfs-dir-to-copy> dans la commande suivante, puis exécutez-la pour l'ensemble de HDFS (/).
      hadoop distcp -libjars ${LIBJARS} \
      -Dfs.client.socket-timeout=3000000
      -Dfs.oci.client.auth.fingerprint=<fingerprint> \
      -Dfs.oci.client.auth.pemfilepath=<oci_pem_key> \
      -Dfs.oci.client.auth.passphrase=<passphrase> \
      -Dfs.oci.client.auth.tenantId=<OCID for Tenancy> \
      -Dfs.oci.client.auth.userId=<OCID for User> \
      -Dfs.oci.client.hostname=<HostName. Example: https://objectstorage.us-phoenix-1.oraclecloud.com/> \
      -Dfs.oci.client.multipart.allowed=true \
      -Dfs.oci.client.proxy.uri=<http://proxy-host>:port \
      -Dmapreduce.map.java.opts="$DISTCP_PROXY_OPTS" \
      -Dmapreduce.reduce.java.opts="$DISTCP_PROXY_OPTS" \
      -Dmapreduce.task.timeout=6000000 \
      -skipcrccheck -m 40 -bandwidth 500 \
      -update -strategy dynamic -i <hdfs-dir-to-copy> oci://<bucket>@<namespace>/<exportedHdfsDir>/
  8. Vérifiez le contenu du magasin d'objets.
    hadoop fs -Dfs.oci.client.auth.fingerprint=<fingerprint> \
         -Dfs.oci.client.auth.pemfilepath=<oci_pem_key> \
         -Dfs.oci.client.auth.passphrase=<passphrase> \
         -Dfs.oci.client.auth.tenantId=<OCID forTenancy> \
         -Dfs.oci.client.auth.userId=<OCID forUser> \
         -Dfs.oci.client.hostname=<HostName>\
         -ls oci://<bucket>@<namespace>/<dir>
  9. Créez des fichiers de métadonnées et exportez-les vers le magasin d'objets.
    1. Télécharger le fichier zip suivant :

      fichiers/create_metadata.zip

    2. Décompressez le fichier et placez create_metadata.sh et create_permissions.py dans un répertoire.
    3. Exécutez le script shell suivant. Ce script crée plusieurs fichiers de métadonnées et les place sous le répertoire /metadata dans HDFS.
      bash create_metadata.sh <hdfs_directory>
    4. Exportez les fichiers de métadonnées vers le magasin d'objets.
      hadoop distcp -Dfs.client.socket-timeout=3000000 \
          -Dfs.oci.client.auth.fingerprint=67:3a:86:d2:8b:61:b0:fd:c4:21:58:92:5a:d2:e8:83 \
          -Dfs.oci.client.auth.pemfilepath=<oci_pem_key> \
          -Dfs.oci.client.auth.tenantId=ocid1.tenancy.oc1..aaaaaaaajh6gxgbuudok7odjpwe5wyv2iq74ihhac5lyulxdgrhsssxc4hna \
          -Dfs.oci.client.auth.userId=ocid1.user.oc1..aaaaaaaaeslrldhdvniuue3dsi7p3xblpfpsluxtx2g6txg5iiukfhzg77ua \
          -Dfs.oci.client.hostname=https://objectstorage.us-ashburn-1.oraclecloud.com/ \
          -Dfs.oci.client.multipart.allowed=true -Dmapreduce.task.timeout=6000000  \
          -skipcrccheck -m 20 -bandwidth 100 -update -strategy dynamic -i /metadata/Metadata* oci://<bucket>@<namespace>/metadata
      
Exportation incrémentielle des données à partir de HDFS

Migrez les données HDFS de manière incrémentielle à l'aide de distcp pour envoyer des données de la source vers la cible après un intervalle de temps et un ajout, une mise à jour ou une suppression dans les données sources.

Note

  • Assurez-vous que le nom de l'instantané dans la grappe source et la grappe cible est identique.
  • Ne supprimez/modifiez pas les données HDFS dans la grappe cible. Cela peut entraîner des erreurs mentionnées dans la section suivante.
  1. Sert à désigner le répertoire parent source et cible.
  2. Autoriser les instantanés dans le répertoire source :
    hdfs dfsadmin -allowSnapshot /data/a
  3. Créez un instantané de /data/a :
    hdfs dfs -createSnapshot /data/a s1
  4. Rendez le contenu du répertoire source /data/a qui doit être répliqué vers /data/a_target :
  5. Prenez un nouvel instantané de /data/a :
    hdfs dfs -createSnapshot /data/a s2
  6. (Facultatif) Vérifiez les différences entre les deux instantanés :
    hdfs snapshotDiff /data/a s1 s2
  7. Migrez les modifications vers /data/a_target :
    hadoop distcp -diff s1 s2 -update /data/a /data/a_target
  8. Créez un instantané correspondant sur /data/a_target :
    hdfs dfs -createSnapshot /data/a_target s2
Exportation des métadonnées Hive

Pour exporter des métadonnées Hive, procédez comme suit :

  1. Obtenez le chemin HDFS du service de mégadonnées cible pour mettre à jour hive_migrate.properties.
    1. Pour extraire TARGET_HDFS_PATH, connectez-vous à la grappe BDS cible à l'aide de l'hôte bastion.
      cat /etc/hadoop/conf/core-site.xml | grep -A1 "fs.defaultFS"
    2. Notez TARGET_HDFS_PATH.

  2. Mettez à jour TARGET_HDFS_PATH et TARGET_OBJECTSTORE_PATH dans le script hive_migrate.properties à l'emplacement où les données de la table Hive sont disponibles après la migration. Vous n'avez pas besoin d'échapper aux barres obliques du chemin.
    #!/bin/bash
    #
    # Copyright (c) 2022, Oracle and/or its affiliates. All rights reserved.
    # Properties file to overide
    #
    # This file will be sourced by the generate_target_ddl_from_source.sh
    # to customize/overide properties
    # SRC_HDFS_PATH and SRC_OBJECTSTORE_PATH will be derived automatically from the cluster.
    # You will be customizing
    #     RUNDIR , TARGET_HDFS_PATH, TARGET_OBJECTSTORE_PATH
    #
    # ------------------------------------------------------------
    # Location to hold intermediate and final scripts to be generated.
    # You must have write privileges on this directory
    export RUNDIR=/tmp/hivemigrate
     
    # ------------------------------------------------------------
    # Specify current hive.metastore.warehouse.dir from Hive Config.
    #
    export SRC_WAREHOUSE_DIR=/apps/hive/warehouse
     
     
    # ------------------------------------------------------------
    # Modify expected target BDS hdfs path in your hive DDL script
    #
    export TARGET_HDFS_PATH=hdfs://testbdmn0.bmbdcsad1.bmbdcs.oraclevcn.com:8020/warehouse/tablespace/external/hive
     
     
    # ------------------------------------------------------------
    # Modify expected target BDS Object Store path in your hive DDL script
    #
    export TARGET_OBJECTSTORE_PATH=oci://bdc2odh@bdsdevcluster/warehouse
  3. Connectez-vous à la grappe BDA ou BDCS au moyen de ssh en tant qu'utilisateur opc. Pour plus d'informations, voir Connexion à un noeud de grappe au moyen de SSH.
  4. Créez un script nommé generate_target_ddl_from_source.sh dans le répertoire de base ~opc avec le code suivant. Ce script génère les instructions LDD que vous pouvez exécuter sur la grappe cible pour créer les métadonnées de ruche.
    #!/bin/bash
    #
    # Copyright (c) 2022, Oracle and/or its affiliates. All rights reserved.
    #
    # Script to generate queries that can be run on a target cluster for hive metadata migration.
    #
    # Usage :
    #   sudo generate_target_ddl_from_source.sh
    # The generated scripts are available under /tmp/hivemigrate/generatedSQL_target_Hive
    #  - 1_CREATE_DB.hql
    #  - 2_CREATE_TABLE.hql
    #  - 3_ADD_PARTITION.hql
    #
    # These scripts can be run on a target cluster AS IS to create hive metadata that matches the source..
    #
     
     
    #------------------------------------------------------------
    # Set Environment
    detect_basedir()
    {
      DIRNAME=`dirname $0`
      BASENAME=`basename $0`
      BASEDIR=$(cd "$DIRNAME" ; pwd)
    }
    detect_basedir
     
     
    #------------------------------------------------------------
    # Initilize any default config properties that has been overriden in
    #     ${BASEDIR}/hive_migrate.properties
    # DO NOT MODIFY. PLEASE OVERRIDE ANY PARAMETER IN ${BASEDIR}/hive_migrate.properties
    export RUNDIR=/tmp/hivemigrate
    export TARGET_HDFS_PATH=hdfs://Some_cluster_name/tmp
    export TARGET_OBJECTSTORE_PATH=oci://mybucket@mytenancy/tmp/
    #
    #------------------------------------------------------------
    if [ -f ${BASEDIR}/hive_migrate.properties ]; then
        echo -e "*** Sourcing Overide proprties file ${BASEDIR}/hive_migrate.properties"
        source ${BASEDIR}/hive_migrate.properties
    else
        echo -e "*** Warning : Missing Overide proprties file ${BASEDIR}/hive_migrate.properties"
        echo -e "*** Continue with default settings\n"
    fi
    #
    usage()
    {
      echo -e "Usage : ${BASENAME} \n"
      echo -e "**  This script is to be run on your source cluster and can be run as many times as you wish."
      echo -e "**  It cleans up any older generated scripts located in ${RUNDIR} before starting \n"
      echo -e "**  The generated output hive query scripts will be available in RUNDIR: ${RUNDIR} ...\n"
      echo -e "*** Modify RUNDIR if you would like to override\n"
      echo -e "**  Currently TARGET_HDFS_PATH is set to hdfs://Some_cluster_name/"
      echo -e "*** Modify TARGET_HDFS_PATH to match your hdfs path in Hive DDL \n"
    }
     
     
    # Make sure only root can run our script
    if [ "$(id -u)" != "0" ]; then
       echo -e "ERROR: *** This script ${BASENAME} must be run as root" 1>&2
       usage
       exit 1
    fi
     
    if [ "$1" != "" ]; then
       usage
       exit 1
    fi
     
     
    #------------------------------------------------------------
    #
    # Figure out the HDFS Path in source cluster.
    # Depending on HA or non-HA cluster the hdfs path syntax is different
    if ! grep -q "dfs.ha.namenodes.mycluster" /etc/bdcsce/conf/blueprint/*.json
    then
        echo -e "INFO:**  Source: Non-HA cluster..."
        nn_fqdn=$(hostname -f)
        SRC_HDFS_PATH=hdfs://${nn_fqdn}:8020${SRC_WAREHOUSE_DIR}
    else
        echo -e 'INFO:**  Source: HA cluster...'
        SRC_HDFS_PATH=hdfs://mycluster${SRC_WAREHOUSE_DIR}
    fi
    echo -e "INFO:**  Assumed source hdfspath : $SRC_HDFS_PATH"
     
     
    #------------------------------------------------------------
    #
    # Figureout Source Object source Patch
    source /etc/bdcsce/conf/datasources.properties
    export SRC_OBJECTSTORE_PATH=${bdcsce_default_objectstore_url}
     
     
     
     
    #------------------------------------------------------------
    # Step-1 : Setup/Clean source and target directories to hold intermediate and final scripts
     
     
    #Path to store intermediate hive queries
    outputSourcePath=${RUNDIR}/generatedSQL_source_Hive
    rm -rf $outputSourcePath
    mkdir -m 777 -p $outputSourcePath
     
     
    #Path to store final target hive queries to be used at target system
    outputTargetPath=${RUNDIR}/generatedSQL_target_Hive
    rm -rf $outputTargetPath
    mkdir -m 777 -p $outputTargetPath
     
     
    #------------------------------------------------------------
    # Step-2 : Extract Create DB statements from MetaStore to Run in Target Hive Installation.
    #
    mysql -Dhive --skip-column-names -e"
     
     
    -- Query for creating databases
    SELECT
        CONCAT('CREATE DATABASE IF NOT EXISTS ',
                D.NAME,
                '\;') AS CREATE_DB_STATEMENTS
    FROM
        DBS D;" > $outputTargetPath/1_CREATE_DB.hql
     
     
    ret=$?
    if [ $ret -ne 0 ];
    then
        echo -e "Error:** - MySQL Error code is $ret while trying to extract DB creation scripts"
        exit $ret
    else
        echo -e "**  DB Creation extraction script $outputTargetPath/1_CREATE_DB.hql completed successfully"
    fi
     
     
    #------------------------------------------------------------
    # Extract Show Create Table statements from MetaStore to Run in Source Hive Installation.
     
     
    mysql -Dhive --skip-column-names -e"
     
     
    -- Query for Creating Show CT Statements to be run in the Source Hive Installation
    SELECT
        CONCAT('USE ', D.name, '\; ','SHOW CREATE TABLE ',
                T.tbl_name,
                '\;') AS SHOW_CT_STATEMENTS
    FROM
        TBLS T
            INNER JOIN
        DBS D ON D.DB_ID = T.DB_ID
    WHERE
        T.TBL_TYPE != 'INDEX_TABLE';" > $outputSourcePath/1_SHOW_CREATE_TABLE.hql
     
     
     
     
    ret=$?
    if [ $ret -ne 0 ];
    then
        echo -e "Error:** - MySQL Error code is $ret while trying to extract SHOW CT scripts"
        exit $ret
    else
        echo -e "\n\n"
        echo -e "**  SHOW CREATE TABLE extraction script $outputSourcePath/1_SHOW_CREATE_TABLE.hql completed successfully"
    fi
     
     
     
     
    #------------------------------------------------------------
    # Run Show Create Table Command on Source Hive Installation to create target Hive CT scripts
    echo -e "**  Running show create table in source cluster"
    echo -e "**  This may take a while...Depends on hive metadata size\n\n"
     
     
     
     
    sudo -u hive hive -f $outputSourcePath/1_SHOW_CREATE_TABLE.hql > $outputTargetPath/2_CREATE_TABLE_temp.hql
    ret=$?
    if [ $ret -ne 0 ];
    then
        echo -e "Error - Hive Error code is $ret while trying to execute SHOW CT scripts"
        exit $ret
    else
        echo -e "\n\n"
        echo -e "**  SHOW CT execution script $outputTargetPath/2_CREATE_TABLE_temp.hql completed successfully"
    fi
     
     
    # Add semicolon suffix ; after CT statements
    echo -e "USE default;" > $outputTargetPath/2_CREATE_TABLE.hql
    cat $outputTargetPath/2_CREATE_TABLE_temp.hql | tr '\n' '\f' | sed -e 's/)\fCREATE/);\fCREATE/g'  | tr '\f' '\n' >> $outputTargetPath/2_CREATE_TABLE.hql
    echo -e ";">>$outputTargetPath/2_CREATE_TABLE.hql
    rm -rf $outputTargetPath/2_CREATE_TABLE_temp.hql
    echo -e "**  Create Table execution script $outputTargetPath/2_CREATE_TABLE.hql created successfully"
     
    #------------------------------------------------------------
    # Convert Managed Table to External table for HIVE 3
    #
    #echo -e "INFO:** Convering Managed Table to External table for HIVE 3 in CT $outputTargetPath/2_CREATE_TABLE.hql scripts"
    #sed -i "s/^CREATE TABLE/CREATE EXTERNAL TABLE/g" $outputTargetPath/2_CREATE_TABLE.hql
     
    #------------------------------------------------------------
    # Replace HDFS Path
    #
    echo -e "INFO:** Replacing $SRC_HDFS_PATH with $TARGET_HDFS_PATH in CT $outputTargetPath/2_CREATE_TABLE.hql scripts"
    sed -i "s,$SRC_HDFS_PATH,$TARGET_HDFS_PATH,g" $outputTargetPath/2_CREATE_TABLE.hql
     
    #------------------------------------------------------------
    # Replace Target Object Store Path
    #
    echo -e "INFO:** Replacing $SRC_OBJECTSTORE_PATH with $TARGET_OBJECTSTORE_PATH in CT $outputTargetPath/2_CREATE_TABLE.hql scripts"
    sed -i "s,$SRC_OBJECTSTORE_PATH,$TARGET_OBJECTSTORE_PATH,g" $outputTargetPath/2_CREATE_TABLE.hql
     
     
    echo -e "INFO:** Replaced $SRC_OBJECTSTORE_PATH with $TARGET_OBJECTSTORE_PATH in CT $outputTargetPath/2_CREATE_TABLE.hql scripts"
     
     
     
    #------------------------------------------------------------
    # Extract Add Partition statements if any from MetaStore to Run in Target Hive Installation.
     
     
    mysql -Dhive --skip-column-names -e"
    -- Query to create add partition scripts to run in target Hive Installation
     
     
     
     
    SET @oldNameNode = '$SRC_HDFS_PATH'; -- Old NameNode address
    SET @newNameNode = '$TARGET_HDFS_PATH'; -- New NameNode address
     
     
     
     
    SELECT
        REPLACE(add_partition_query,
            @oldNameNode,
            @newNameNode) AS add_partition_query
     
     
     
     
    FROM
            (SELECT
                    CONCAT('USE ', D.name, '\; ', ' ALTER TABLE ', T.TBL_NAME, ' ADD PARTITION (', GROUP_CONCAT(PK.PKEY_NAME, '=', '\'', PKV.PART_KEY_VAL, '\''
                        ORDER BY PK.INTEGER_IDX), ') LOCATION \'', S.location, '\'\; ') AS add_partition_query
        FROM
            TBLS T
        INNER JOIN DBS D ON T.DB_ID = D.DB_ID
        INNER JOIN PARTITION_KEYS PK ON T.TBL_ID = PK.TBL_ID
        INNER JOIN PARTITIONS P ON P.TBL_ID = T.TBL_ID
        INNER JOIN PARTITION_KEY_VALS PKV ON P.PART_ID = PKV.PART_ID
            AND PK.INTEGER_IDX = PKV.INTEGER_IDX
        INNER JOIN SDS S ON P.SD_ID = S.SD_ID
        GROUP BY P.PART_ID
        ORDER BY D.name) alias1;" > $outputTargetPath/3_ADD_PARTITION.hql
    ret=$?
    if [ $ret -ne 0 ];
    then
        echo -e "Error - MySQL Error code is $ret while trying to extract ADD PARTITION scripts"
        exit $ret
    else
        echo -e "\n\n"
        echo -e "**  ADD PARTITION extraction script $outputTargetPath/3_ADD_PARTITION.hql completed successfully"
    fi
     
     
     
     
    echo -e "\n\n"
    echo -e "INFO: ** Here are your Target installation scripts"
    ls -al $outputTargetPath/*
    echo -e "\n\n"
    echo -e "INFO: ** Run these hql scripts on your Target hive shell..."
     
     
    exit 0
  5. En tant qu'utilisateur racine, exécutez le script generate_target_ddl_from_source.sh.
    sudo ./generate_target_ddl_from_source.sh
    Les scripts suivants sont générés sous /tmp/hivemigrate/generatedSQL_target_Hive :
    • 1_CREATE_DB.hql
    • 2_CREATE_TABLE.hql
    • 3_ADD_PARTITION.hql

    Lors de l'importation, vous copiez ces scripts de /tmp/hivemigrate/generatedSQL_target_Hive vers un noeud principal de la grappe BDS cible avec accès à la racine et à la base de données.

Importation de ressources vers le service de mégadonnées

Vous importez maintenant les données et métadonnées exportées dans le service de mégadonnées.

Préalables
Avant d'importer des ressources, procédez comme suit :
  1. Configurez un nouvel environnement cible dans le service de mégadonnées avec la même version BDA ou BDCS de Hadoop (Hadoop 2.7.x) que la grappe source.
    Note

    Notez ce qui suit :
      • Définissez la grappe du service de mégadonnées sur OCI de la même taille que la grappe BDA ou BDCS source. Toutefois, vous devez vérifier vos besoins en matière de calcul et de stockage avant de décider de la taille du cluster cible.
      • Pour les formes de machine virtuelle d'Oracle Cloud Infrastructure, voir Formes de calcul. BDA ou BDCS ne prend pas en charge toutes les formes.
      • Si un logiciel autre que la pile BDA ou BDCS est installé sur le système source à l'aide du script d'amorçage ou d'une autre méthode, vous devez également installer et tenir à jour ce logiciel sur le système cible.
  2. Copiez le fichier de clé privée PEM (oci_api_key.pem) sur tous les noeuds de la grappe du service de mégadonnées et définissez les autorisations appropriées.
  3. Exportez les artefacts de la grappe BDA ou BDCS source.
Importation de données dans HDFS

Pour importer des données dans HDFS :

  1. Connectez-vous à la grappe du service de mégadonnées au moyen de SSH en tant qu'utilisateur opc.
    ssh -i id_rsa <private_node_ip>
  2. Déterminez l'emplacement HDFS où les données doivent être stockées.
    
    grep -A1 -i fs.defaultFS /etc/hadoop/conf/core-site.xml
  3. En tant qu'utilisateur HDFS, déplacez les données du magasin d'objets vers le HDFS cible.
    1. Utilisez hadoop fs -cp pour importer des données HDFS du magasin d'objets vers une grappe BDS de destination en tant qu'utilisateur HDFS.
      sudo su - hdfs
       
      hadoop fs -Dfs.oci.client.auth.fingerprint=<fingerprint> \
      -Dfs.oci.client.auth.pemfilepath=<oci_pem_key> \
      -Dfs.oci.client.auth.passphrase=<passphrase> \
      -Dfs.oci.client.auth.tenantId=<OCID for Tenancy> \
      -Dfs.oci.client.auth.userId=<OCID for User> \
      -Dfs.oci.client.hostname=<HostName. Example: https://objectstorage.us-phoenix-1.oraclecloud.com/> \
      -Dfs.oci.client.proxy.uri=http://<proxyhost>:<proxyport> \
      -cp oci://<bucket>@<tenancy>/<dir>/ <hdfs-dir-to-copy>
    2. Utilisez hadoop distcp pour importer des données HDFS du magasin d'objets vers une grappe BDS à plusieurs noeuds. Validez-le par rapport à un répertoire spécifique. Par exemple, utilisez /user/oozie pour <hdfs-dir-to-copy> dans la commande suivante, puis exécutez-la pour l'ensemble de HDFS (/).
      hadoop distcp -libjars ${LIBJARS} \
      -Dfs.client.socket-timeout=3000000
      -Dfs.oci.client.auth.fingerprint=<fingerprint> \
      -Dfs.oci.client.auth.pemfilepath=<oci_pem_key> \
      -Dfs.oci.client.auth.passphrase=<passphrase> \
      -Dfs.oci.client.auth.tenantId=<OCID for Tenancy> \
      -Dfs.oci.client.auth.userId=<OCID for User> \
      -Dfs.oci.client.hostname=<HostName. Example: https://objectstorage.us-phoenix-1.oraclecloud.com/> \
      -Dfs.oci.client.multipart.allowed=true \
      -Dfs.oci.client.proxy.uri=<http://proxy-host>:port \
      -Dmapreduce.map.java.opts="$DISTCP_PROXY_OPTS" \
      -Dmapreduce.reduce.java.opts="$DISTCP_PROXY_OPTS" \
      -Dmapreduce.task.timeout=6000000 \
      -skipcrccheck -m 40 -bandwidth 500 \
      -update -strategy dynamic -i oci://<bucket>@<tenancy>/<exportedHdfsDir>/ <hdfs-dir-to-copy>
  4. Répertoriez le contenu du répertoire tmp.
    hadoop fs -ls /<hdfs-dir-to-copy>
Importer les fichiers de métadonnées et exécuter les autorisations
Effectuez les opérations suivantes :
  1. Importez les fichiers de métadonnées du magasin d'objets vers /metadata dans HDFS.
    
    hadoop distcp -libjars ${LIBJARS} \
    -Dfs.client.socket-timeout=3000000
    -Dfs.oci.client.auth.fingerprint=<fingerprint> \
    -Dfs.oci.client.auth.pemfilepath=<oci_pem_key> \
    -Dfs.oci.client.auth.passphrase=<passphrase> \
    -Dfs.oci.client.auth.tenantId=<OCID for Tenancy> \
    -Dfs.oci.client.auth.userId=<OCID for User> \
    -Dfs.oci.client.hostname=<HostName. Example: https://objectstorage.us-phoenix-1.oraclecloud.com/> \
    -Dfs.oci.client.multipart.allowed=true \
    -Dfs.oci.client.proxy.uri=<http://proxy-host>:port \
    -Dmapreduce.map.java.opts="$DISTCP_PROXY_OPTS" \
    -Dmapreduce.reduce.java.opts="$DISTCP_PROXY_OPTS" \
    -Dmapreduce.task.timeout=6000000 \
    -skipcrccheck -m 40 -bandwidth 500 \
    -update -strategy dynamic -i oci://<bucket>@<tenancy>/metadata/ /metadata
  2. Déplacez les fichiers vers le répertoire local.
    hdfs dfs -get /metadata/Metadata*
  3. Exécutez les fichiers en parallèle en arrière-plan ou dans plusieurs terminaux.
    bash Metadataaa &
     
    bash Metadataab &
     
    bash Metadataac &...
Importation des métadonnées

Pour importer des métadonnées :

  1. Se connecter à la grappe BDS au moyen de l'hôte bastion en tant qu'utilisation de opc
  2. Copier les scripts d'interrogation LDD HIVE, créés dans le cluster BDA source, dans le cluster BDS cible
    1. 1_CREATE_DB.hql.
    2. 2_CREATE_TABLE.hql
    3. 3_ADD_PARTITION.hql
  3. Exécutez le script 1_CREATE_DB.hql.
    hive -f 1_CREATE_DB.hql
  4. Exécutez le script 2_CREATE_TABLE.hql.
    hive -f 2_CREATE_TABLE.hql
  5. Exécutez le script 3_ADD_PARTITION.hql.
    hive -f 3_ADD_PARTITION.hql
Mise à jour du répertoire de l'entrepôt de métadonnées Hive

Effectuez les étapes suivantes :

  1. Recherchez la valeur de hive.metastore.warehouse.dir. Il s'agit d'une propriété de ruche configurée à /apps/hive/warehouse dans la grappe BDA ou BDCS dans hive-site.xml.
    <name>hive.metastore.warehouse.dir</name>
    <value>/apps/hive/warehouse</value>
  2. Reconfigurez hive.metastore.warehouse.dir en <exportedHdfsDir>/apps/hive/warehouse dans hive-site.xml dans la grappe BDS.
  3. Si vous avez copié vos données HDFS vers hdfs://tmp, configurez la propriété hive.metastore.warehouse.dir en tant que /tmp/apps/hive/warehouse.

Validation de la migration

Pour valider la migration, procédez comme suit :
  • Vérifiez que vous voyez le même jeu de tables de ruches dans le cluster cible que dans le cluster source.
    1. Connectez-vous à la coque de ruche.
      hive
    2. Exécutez la commande suivante pour lister les tables :
      show tables;