Migration à partir de Big Data Appliance (BDA) ou de Big Data Cloud Service (BDCS)

Découvrez comment migrer d'Oracle Big Data Appliance ou Big Data Cloud Service vers Big Data Service

Remarque

Nous vous recommandons de conserver vos clusters 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 l'outil de migration WANdisco LiveData

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

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

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

  1. Installez le migrateur LiveData sur n'importe quelle arête du cluster 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'utilitaire de migration LiveData terminées, accédez à l'interface utilisateur et créez votre compte utilisateur. L'URL de l'interface utilisateur est la suivante :
    http://<LDM-Installation-Host.com>:8081
  3. Pour migrer des données, procédez comme suit :
    1. Configurez 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 comme suit :
      1. Dans le panneau Produits, sélectionnez l'instance appropriée.
      2. Sur 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 comme suit :
      1. Dans le panneau Produits, sélectionnez l'instance appropriée.
      2. Sur 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 cluster 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 mappings 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 migration LiveData pour laquelle vous voulez créer une correspondance de chemin.
      2. Dans le menu Migrations, sélectionnez Mappages de chemin.
      3. En haut à droite de l'interface, cliquez sur 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 migration à partir de l'interface utilisateur, procédez comme suit :
      1. Indiquez le nom de la migration.
      2. Dans vos systèmes de fichiers, sélectionnez une source et une cible.
      3. Sélectionnez le chemin du système de fichiers source à migrer. Utilisez le navigateur de dossiers et sélectionnez le chemin d'accès à migrer. Sélectionnez le dossier gris en regard d'un chemin d'accès pour afficher ses sous-répertoires.
  4. Migrez les métadonnées.
    Pour migrer les métadonnées, procédez comme suit :
    1. Connectez les métastores.
      Hive Migrator, fourni avec LiveData Migrator, vous permet de transférer des métadonnées d'un metastore source vers des metastores cible. Connectez-vous aux métastores 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. Indiquez le nom de 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é sur le langage DDL 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 commençant par test, tel que test01, test02, test03.

      5. Choisissez Créer.

Migrer des ressources à l'aide de BDR

Sauvegarder les données BDA dans Oracle Object Storage

Avant de sauvegarder votre cluster Oracle Big Data Appliance, vérifiez les points suivants :

  • Vous disposez d'un accès administrateur au cluster Big Data Appliance.

    • Vous avez besoin des informations d'identification d'administrateur pour Cloudera Manager.

    • Vous avez besoin d'un administrateur Hadoop disposant d'un accès complet aux données HDFS et aux métadonnées Hive qui sont sauvegardées sur Oracle Object Storage.

  • Configurez la banque d'objets Oracle Cloud Infrastructure vers laquelle les données HDFS sont copiées. Pour plus d'informations, reportez-vous à Présentation d'Object Storage.

  • 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 de droits d'accès et peut accéder à la console Oracle Cloud Infrastructure.

    • L'utilisateur dispose de droits d'accès et peut créer un bucket. Pour plus d'informations, reportez-vous à Autoriser les administrateurs Object Storage à gérer des buckets et des objets dans Stratégies courantes.

    • L'utilisateur peut inspecter la configuration de la banque d'objets Oracle Cloud Infrastructure.

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

  1. Créez un bucket dans Oracle Object Storage.

    Les buckets permettent de stocker et d'organiser les données. Le bucket que vous créez est le conteneur des données sauvegardées dans Oracle Object Storage. Pour plus d'informations sur la gestion d'Oracle Object Storage, reportez-vous à Présentation d'Object Storage.

    1. Connectez-vous à la console OCI.
    2. Ouvrez le menu de navigation et sélectionnez Stockage. Sous Object Storage, sélectionnez Buckets.
    3. Sélectionnez Créer un bucket.
    4. Créez un bucket dont le nom est en majuscules. Par exemple, BDA-MIGRATION. Le connecteur Hadoop S3 fonctionne uniquement si le nom du bucket est en majuscules. Créez le bucket dans votre région d'origine, que le cluster se trouve ou non dans une autre région. Pour plus d'informations sur les buckets, reportez-vous à Mutation de données dans Object Storage.
  2. Créez une clé secrète client.
    Une clé secrète est requise pour établir une connexion sécurisée entre votre cluster Hadoop et Oracle Object Storage. La clé est créée pour un utilisateur disposant de privilèges lui permettant d'effectuer des mises à jour du bucket 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 en afficher les détails.
    4. Sur le côté gauche de la page, sélectionnez Clés secrètes client.
    5. Sélectionnez Générer une clé secrète.
    6. Entrez une description conviviale de la clé (par exemple, mysecretkey) et sélectionnez Générer une clé secrète.
    7. Copiez immédiatement la clé secrète car, pour des raisons de sécurité, vous ne pourrez plus l'extraire après avoir fermé la boîte de dialogue.
  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. Veillez à utiliser les clés pour un utilisateur Oracle Cloud Infrastructure ayant accès au bucket cible dans Oracle Object Storage.

    1. Connectez-vous à Cloudera Manager sur le cluster source.
    2. Accédez à Administration et sélectionnez Comptes externes.
    3. Dans l'onglet Informations d'identification AWS, sélectionnez Ajouter des informations d'identification de clé d'accès et indiquez les informations suivantes :
      • Nom : indiquez le nom des informations d'identification. Par exemple, oracle-credential.

      • AWS Access Key ID : indiquez le nom de la clé d'accès. Par exemple, myaccesskey.

      • Clé secrète AWS : entrez la valeur de clé secrète que vous avez notée lors de la création d'une clé secrète client.

    4. Sélectionnez Add (Ajouter). La page Edit S3Guard apparaît. Ne sélectionnez pas Activer S3Guard.
    5. Sélectionnez Save (Enregistrer).
  4. Mettez à jour core-site.xml avec les informations d'identification Object Storage.

    Voici un exemple de mises à jour core-site.xml qui doivent être ajoutées pour se connecter à Object Storage lors de la sauvegarde des données. Après avoir mis à jour le coeur site.xml sur les clusters 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 cluster 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 une programmation de réplication Hive pour la sauvegarde.

    Pour sauvegarder des données et des métadonnées Hive de votre cluster Hadoop vers Oracle Object Storage, vous devez créer une programmation 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 les modifications apportées aux fichiers au cours du processus de réplication n'entraînent pas d'échecs de réplication. Pour plus d'informations, reportez-vous à la section Using Snapshots with Replication de la documentation Cloudera.

    Pour créer une programmation de réplication Hive, procédez comme suit :

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

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

        • Destination : sélectionnez Hive (nom du cluster).

        • Chemin racine du cloud : 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 Tout répliquer.

        • Option de réplication : sélectionnez Metadata and Data.

        • Programmer : sélectionnez immédiatement.

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

          Remarque

          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.
          Remarque

          Si le cryptage Hadoop est activé, qui stocke les données cryptées dans HDFS, veillez à l'exécuter en tant qu'utilisateur disposant d'un accès de décryptage à la zone de cryptage.
    4. Sélectionnez Save Schedule. Vous pouvez surveiller la réplication sur la page Programmations de réplication.
  6. Vérifiez la configuration du cluster source.

    Notez tous les paramètres de configuration personnalisés sur votre cluster source. Vous devrez peut-être effectuer des mises à jour similaires sur votre cluster Big Data Service. Il s'agit notamment de l'installation de produits tiers, de fichiers JAR supplémentaires, de mises à jour de la configuration Hadoop (tels que des fichiers JAR auxiliaires pour Hive), etc.

    L'API Cloudera Manager vous permet de voir toutes les modifications apportées à la configuration de cluster par défaut. Téléchargez le déploiement de cluster et examinez la sortie pour comprendre les modifications qui peuvent être appliquées à Big Data Service.

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

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

    Vous obtenez la configuration de cluster au format JSON, répertoriant les remplacements effectués sur le cluster. Parcourez le fichier et vérifiez s'il existe des remplacements à la valeur par défaut. Par exemple, recherchez hive.aux.jars.path pour afficher la liste des fichiers JAR d'application requis pour exécuter les requêtes Hive. Copiez ces fichiers dans le cluster Big Data Service et effectuez une mise à jour équivalente vers hive.aux.jars.path.

Restauration de la sauvegarde BDA vers le cluster Big Data Service

Avant de restaurer le cluster Oracle Big Data Appliance vers Oracle Big Data Service, vous devez disposer des éléments suivants :

  • Sauvegarde du cluster Big Data Appliance. Reportez-vous à Sauvegarde des données BDA vers Oracle Object Storage.

  • Cluster Big Data Service déployé. Reportez-vous à Création d'un cluster Big Data Service sur Oracle Cloud Infrastructure.

  • Accès à la clé secrète qui dispose des privilèges nécessaires pour lire le bucket Oracle Object Storage contenant la sauvegarde de cluster Big Data Appliance.

  • Informations d'identification d'administrateur pour Cloudera Manager sur le cluster Big Data Service.

  • Superutilisateur HDFS et administrateur Hive disposant des droits nécessaires pour restaurer les données et les métadonnées dans le cluster.

Restaurer la sauvegarde BDA

Pour restaurer une sauvegarde BDA, procédez comme suit :
  1. Connectez-vous à Cloudera Manager sur le cluster Big Data Service.
    1. Connectez-vous à https://your-utility-node-1:7183, où your-utility-node est l'adresse IP publique ou privée du noeud utilitaire. Si la haute disponibilité est utilisée, il s'agit du premier noeud utilitaire du cluster. Si la haute disponibilité n'est pas utilisée, il s'agit du seul noeud utilitaire.
    2. Entrez le nom utilisateur admin et le mot de passe indiqués lors de la création du cluster.
  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 autoriser le cluster à accéder aux données dans Oracle Object Storage.

    Pour créer un compte externe, procédez comme suit :
    1. Connectez-vous à Cloudera Manager sur le cluster Oracle Big Data Service.
    2. Accédez à Administration et sélectionnez Comptes externes.
    3. Dans l'onglet Informations d'identification AWS, sélectionnez Ajouter des informations d'identification de clé d'accès et indiquez les informations suivantes :
      • Nom : indiquez le nom des informations d'identification. Par exemple, oracle-credential.

      • AWS Access Key ID : indiquez le nom de la clé d'accès. Par exemple, myaccesskey.

      • Clé secrète AWS : entrez la valeur de clé secrète générée précédemment lors de la création d'une clé secrète client.

    4. Choisissez Ajouter. La page Edit S3Guard apparaît. Ne sélectionnez pas Activer S3Guard.
    5. Sélectionnez Sauvegarder.
    6. Dans la page qui apparaît, activez l'accès du cluster à S3 :
      1. Sélectionnez Enable pour le nom du cluster.
      2. Sélectionnez la stratégie d'informations d'identification More Secure et cliquez sur Continue.
      3. Dans la page Restart Dependent Services, sélectionnez Restart Now, puis Continue. Les détails de redémarrage sont affichés. Le redémarrage du cluster peut prendre quelques minutes.
      4. Après le redémarrage, sélectionnez Continue, puis Finish.
  3. Mettez à jour l'adresse s3a.
    Remarque

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

    L'URI endpoint permet au cluster Hadoop de se connecter à la banque d'objets contenant les données source. Indiquez cet URI dans Cloudera Manager.

    Pour mettre à jour l'adresse, procédez comme suit :

    1. Connectez-vous à Cloudera Manager sur le cluster Oracle Big Data Service.
    2. Dans la liste des services sur la gauche, sélectionnez S3 Connector.
    3. Sélectionnez l'onglet Configuration.
    4. Mettez à jour la propriété d'adresse 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. Enregistrez vos modifications.
    6. Mettez à jour le cluster :
      1. Accédez à votre cluster, sélectionnez Actions, sélectionnez Déployer la configuration client, puis confirmez l'action.
      2. Lorsque vous avez terminé, sélectionnez Close.
    7. Redémarrez le cluster (sélectionnez Actions et redémarrez).
  4. Créez une programmation de réplication HDFS pour la restauration.

    Restaurez les données HDFS sauvegardées dans Oracle Object Storage. Restaurez les données HDFS dans le répertoire racine du système de fichiers HDFS pour mettre la source en miroir.

    Si Hive dispose de données externes capturées dans HDFS et non gérées par Hive, créez la programmation de réplication HDFS avant de créer la programmation de réplication Hive.

    Pour créer une programmation de réplication HDFS, procédez comme suit :

    1. Connectez-vous à Cloudera Manager sur le cluster Oracle Big Data Service.
    2. Créez une programmation de réplication HDFS :
      1. Accédez à Backup et sélectionnez Replication Schedules.
      2. Sélectionnez Create Schedule et sélectionnez HDFS Replication.
      3. Indiquez les détails de la programmation de réplication :
        • Nom : entrez un nom. Par exemple, hdfs-rep1.

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

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

        • Destination : sélectionnez HDFS (nom du cluster).

        • Chemin de la destination : entrez /

        • Programmer : sélectionnez immédiatement.

        • Run As Username (Exécuter en tant que nom utilisateur) : indiquez 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.
          Remarque

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

          si le cryptage 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 encrypt.
    3. Sélectionnez Save Schedule. Vous pouvez surveiller la réplication sur la page Programmations de réplication.
  5. Créez une programmation de réplication Hive pour la restauration.

    Pour restaurer des données et métadonnées Hive à partir d'Oracle Object Storage vers le cluster Hadoop, créez une programmation de réplication Hive dans Cloudera Manager.

    Pour créer une programmation de réplication Hive, procédez comme suit :

    1. Connectez-vous à Cloudera Manager sur le cluster Oracle Big Data Service.
    2. Créez la programmation de réplication :
      1. Accédez à Backup et sélectionnez Replication Schedules.
      2. Sélectionnez Create Schedule et sélectionnez Hive Replication.
      3. Indiquez les détails de la programmation de réplication Hive :
        • Nom : entrez un nom. Par exemple, hive-rep1.

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

        • Destination : sélectionnez Hive (nom du cluster).

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

        • Chemin de la destination HDFS : entrez /

        • Bases de données : sélectionnez Tout répliquer.

        • Option de réplication : sélectionnez Metadata and Data.

        • Programmer : sélectionnez immédiatement.

        • Run As Username (Exécuter en tant que nom utilisateur) : indiquez 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.
          Remarque

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

Spark

Vérifiez le travail sparkline et mettez-le à jour en fonction des nouveaux détails du cluster.

Yarn

Pour utiliser les mêmes noms de file d'attente que ceux du cluster source, procédez comme suit :
  • A partir du cluster source, copiez Cloudera Manager. (Accédez à YARN, sélectionnez Configuration et sélectionnez le contenu Fair Scheduler Allocations (Deployment) à la même position que le cluster cible.)
  • Si vous ne pouvez pas copier, créez la file d'attente manuellement. (Dans Cloudera Manager, accédez à Clusters et sélectionnez Dynamic Resource Pool Configuration.)

Sentinelle

  • 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 la sentinelle à partir de la base de données de la sentinelle source et les restaurer dans la base de données de la sentinelle de destination, vous avez besoin de l'outil de migration des métadonnées Sentry. Contactez le support technique Oracle pour obtenir la note ID de document 2879665.1 relative aux outils de migration des 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 vers Big Data Service à l'aide de l'outil Distcp. Distcp est un outil open source qui peut être utilisé pour copier des ensembles de données volumineux entre des systèmes de fichiers distribués au sein et entre des clusters.

Préparation du cluster BDA ou BDCS

Pour préparer le cluster BDA ou BDCS à l'exportation, 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, reportez-vous à Définition du mode de maintenance pour un service.
  2. Connectez-vous au cluster BDA ou BDCS via SSH en tant qu'utilisateur opc. Pour plus d'informations, reportez-vous à Connexion à un noeud de cluster via SSH (Secure Shell).
  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. Procédez comme suit :
    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 sur le cluster BDA ou BDCS.
      sudo su -
      cp <private-key> /home/opc/.oci/oci_api_key.pem
    2. Modifiez les autorisations de 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és PEM privé 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és privées du répertoire /data par un fichier en lecture seule.
      chmod 444 /data/oci_api_key.pem
    Si le cluster BDA ou BDCS comporte plusieurs noeuds, assurez-vous que la clé privée OCI est disponible sur tous les noeuds avec le même chemin. Vous pouvez utiliser l'utilisateur otools pour copier des fichiers sur 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 l'ordre indiqué 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
Export 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 sur lequel 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 accéder 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 sous 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 en cours, 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 de sorte 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 proxy 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 sous un répertoire spécifique dans le bucket de banque d'objets OCI, créez un répertoire sous le bucket.
    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 la banque 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'un cluster à noeud unique vers la banque 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 les données HDFS des clusters à plusieurs noeuds vers la banque 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 de la banque 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 la banque d'objets.
    1. Téléchargez 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 dans le répertoire /metadata dans HDFS.
      bash create_metadata.sh <hdfs_directory>
    4. Exportez les fichiers de métadonnées vers la banque 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 de données à partir de HDFS

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

Remarque

  • Assurez-vous que le nom de l'instantané dans le cluster source et le cluster cible sont identiques.
  • Ne supprimez/modifiez pas les données HDFS dans le cluster cible. Cela peut entraîner des erreurs mentionnées dans la section suivante.
  1. Identifiez les répertoires parent source et cible.
  2. Autoriser les instantanés dans le répertoire source :
    hdfs dfsadmin -allowSnapshot /data/a
  3. Créez un cliché de /data/a :
    hdfs dfs -createSnapshot /data/a s1
  4. Définissez le contenu sur le 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 cliché correspondant sur /data/a_target :
    hdfs dfs -createSnapshot /data/a_target s2
Export de métadonnées Hive

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

  1. Obtenez le chemin HDFS Big Data Service cible pour mettre à jour hive_migrate.properties.
    1. Pour extraire le fichier TARGET_HDFS_PATH, connectez-vous au cluster 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 les éléments TARGET_HDFS_PATH et TARGET_OBJECTSTORE_PATH du script hive_migrate.properties vers l'emplacement où les données de la table Hive sont disponibles après la migration. Vous n'avez pas besoin d'échapper les 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 au cluster BDA ou BDCS via ssh en tant qu'utilisateur opc. Pour plus d'informations, reportez-vous à Connexion à un noeud de cluster via SSH (Secure Shell).
  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 DDL que vous pouvez exécuter sur le cluster cible pour créer les métadonnées de la 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 root, 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'import, vous copiez ces scripts à partir de /tmp/hivemigrate/generatedSQL_target_Hive vers un noeud maître dans le cluster BDS cible avec accès root et base de données.

Importer des ressources dans Big Data Service

Vous importez à présent les données et métadonnées exportées vers Big Data Service.

Prérequis
Avant d'importer des ressources, procédez comme suit :
  1. Configurez un nouvel environnement cible sur Big Data Service avec la même version Hadoop BDA ou BDCS (Hadoop 2.7.x) que le cluster source.
    Remarque

    Remarque :
      • Définissez le cluster Big Data Service sur OCI avec la même taille que le cluster BDA ou BDCS source. Toutefois, vous devez passer en revue 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 Oracle Cloud Infrastructure, reportez-vous à 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 de démarrage ou d'une autre méthode, vous devez également installer et maintenir ce logiciel sur le système cible.
  2. Copiez le fichier de clé privée PEM (oci_api_key.pem) sur tous les noeuds du cluster Big Data Service et définissez les droits d'accès appropriés.
  3. Exportez les artefacts à partir du cluster BDCS ou BDA source.
Importer des données dans HDFS

Pour importer des données dans HDFS, procédez comme suit :

  1. Connectez-vous au cluster Big Data Service (BDS) via 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 de la banque d'objets vers le HDFS cible.
    1. Utilisez hadoop fs -cp pour importer des données HDFS de la banque d'objets vers un cluster 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 de la banque d'objets vers un cluster BDS à plusieurs noeuds. Validez-le par rapport à un répertoire spécifique. Par exemple, utilisez d'abord /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 actions suivantes :
  1. Importez les fichiers de métadonnées de la banque 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 sur plusieurs terminaux.
    bash Metadataaa &
     
    bash Metadataab &
     
    bash Metadataac &...
Import de métadonnées

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

  1. Connexion au cluster BDS via un bastion en tant qu'utilisation opc
  2. Copiez les scripts de requête DDL HIVE, créés dans le cluster BDA source, vers 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 d'entrepôt de metastore Hive

Procédez comme suit :

  1. Recherchez la valeur de hive.metastore.warehouse.dir. Il s'agit d'une propriété de ruche configurée sur /apps/hive/warehouse dans le cluster 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 le cluster 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 ensemble de tables de ruche dans le cluster cible que dans le cluster source.
    1. Connectez-vous à la coque de la ruche.
      hive
    2. Pour répertorier les tables, exécutez la commande suivante :
      show tables;