Utilisation d'Apache Hadoop comme source pour AWS SCT - AWS Schema Conversion Tool

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Utilisation d'Apache Hadoop comme source pour AWS SCT

Vous pouvez utiliser l'interface de ligne de AWS SCT commande (CLI) pour migrer d'Apache Hadoop vers Amazon EMR. AWS SCTutilise votre compartiment Amazon S3 comme espace de stockage temporaire pour vos données pendant la migration.

AWS SCTprend en charge comme source Apache Hadoop version 2.2.0 et supérieure. AWS SCTSupporte également les versions 0.13.0 et supérieures d'Apache Hive.

AWS SCTprend en charge comme cible les versions 6.3.0 et supérieures d'Amazon EMR. AWS SCTSupporte également comme cible Apache Hadoop version 2.6.0 et supérieure, et Apache Hive version 0.13.0 et supérieure.

Conditions préalables à l'utilisation d'Apache Hadoop en tant que source

Les prérequis suivants sont requis pour se connecter à Apache Hadoop à l'aide de l'interface de ligne de commande. AWS SCT

  • Créez un bucket Amazon S3 pour stocker les données pendant la migration. Vous pouvez ensuite copier les données vers Amazon EMR HDFS ou utiliser Amazon S3 comme référentiel de données pour vos charges de travail Hadoop. Pour plus d'informations, consultez la section Création d'un bucket dans le Guide de l'utilisateur Amazon S3.

  • Créez un rôle AWS Identity and Access Management (IAM) avec la AmazonS3FullAccess politique. AWS SCTutilise ce rôle IAM pour accéder à votre compartiment Amazon S3.

  • Prenez note de votre clé AWS secrète et de votre clé d'accès AWS secrète. Pour plus d'informations sur les clés AWS d'accès, consultez la section Gestion des clés d'accès dans le Guide de l'utilisateur IAM.

  • Créez et configurez un cluster Amazon EMR cible. Pour plus d'informations, consultez la section Premiers pas avec Amazon EMR dans le Guide de gestion Amazon EMR.

  • Installez l'distcputilitaire sur votre cluster source Apache Hadoop. Installez également l's3-dist-cputilitaire sur votre cluster Amazon EMR cible. Assurez-vous que les utilisateurs de votre base de données sont autorisés à exécuter ces utilitaires.

  • Configurez le core-site.xml fichier dans votre cluster Hadoop source pour utiliser le protocole s3a. Pour ce faire, définissez le fs.s3a.aws.credentials.provider paramètre sur l'une des valeurs suivantes.

    • org.apache.hadoop.fs.s3a.TemporaryAWSCredentialsProvider

    • org.apache.hadoop.fs.s3a.SimpleAWSCredentialsProvider

    • org.apache.hadoop.fs.s3a.AnonymousAWSCredentialsProvider

    • org.apache.hadoop.fs.s3a.auth.AssumedRoleCredentialProvider

    Vous pouvez ajouter l'exemple de code suivant dans le core-site.xml fichier.

    <property> <name>fs.s3a.aws.credentials.provider</name> <value>org.apache.hadoop.fs.s3a.SimpleAWSCredentialsProvider</value> </property>

    L'exemple précédent montre l'une des quatre options de la liste d'options précédente. Si vous ne définissez pas le fs.s3a.aws.credentials.provider paramètre dans le core-site.xml fichier, le AWS SCT fournisseur est sélectionné automatiquement.

Autorisations d'utilisation de Hive comme source

Les autorisations requises pour un utilisateur de Hive source sont les suivantes :

  • READaccès aux dossiers de données source et au compartiment Amazon S3 source

  • READ+WRITEaccès aux compartiments Amazon S3 intermédiaires et cibles

Pour augmenter la vitesse de migration, nous vous recommandons d'exécuter le compactage pour les tables sources transactionnelles ACID.

Les autorisations requises pour un utilisateur cible d'Amazon EMR Hive sont les suivantes :

  • READaccès au compartiment Amazon S3 cible

  • READ+WRITEaccès au compartiment Amazon S3 intermédiaire

  • READ+WRITEaccès aux dossiers HDFS cibles

Autorisations d'utilisation de HDFS en tant que source

Les autorisations requises pour HDFS en tant que source sont les suivantes :

  • EXECUTE pour la NameNode

  • EXECUTE+READpour tous les dossiers et fichiers sources que vous incluez dans le projet de migration

  • READ+WRITEpour le tmp répertoire dans lequel NameNode exécuter des tâches Spark et stocker des fichiers avant la migration vers Amazon S3

Dans HDFS, toutes les opérations nécessitent un accès transversal. L'accès par traversée exige l'EXECUTEautorisation sur tous les composants existants du chemin, à l'exception du composant final du chemin. Par exemple, pour tout accès à une opération/foo/bar/baz, votre utilisateur doit disposer d'une EXECUTE autorisation sur //foo, et/foo/bar.

L'exemple de code suivant montre comment accorder EXECUTE+READ des autorisations pour vos dossiers et fichiers source, ainsi que READ+WRITE des autorisations pour le tmp répertoire.

hadoop fs –chmod –R 744 /user/hdfs-data hadoop fs –chmod –R 766 /tmp

Autorisations d'utilisation de HDFS comme cible

Les autorisations requises pour Amazon EMR HDFS en tant que cible sont les suivantes :

  • EXECUTEpour NameNode le cluster Amazon EMR cible

  • READ+WRITEpour les dossiers HDFS cibles dans lesquels vous allez stocker les données après la migration

Connexion à Apache Hadoop en tant que source

Vous pouvez utiliser Apache Hadoop comme source dans la AWS SCT version 1.0.670 ou supérieure. Vous pouvez migrer des clusters Hadoop vers Amazon EMR uniquement via l'interface de ligne de AWS SCT commande (CLI). Avant de commencer, familiarisez-vous avec l'interface de ligne de commande deAWS SCT. Pour plus d'informations, veuillez consulter AWS SCT Référence CLI.

Pour vous connecter à Apache Hadoop dans l'interface de ligne de commande AWS SCT
  1. Créez un nouveau script AWS SCT CLI ou modifiez un modèle de scénario existant. Par exemple, vous pouvez télécharger et modifier le HadoopMigrationTemplate.scts modèle. Pour plus d'informations, veuillez consulter Obtenir des scénarios CLI.

  2. Configurez les paramètres de l'AWS SCTapplication tels que l'emplacement du pilote et le dossier journal.

    Téléchargez le pilote JDBC requis et spécifiez l'emplacement où vous stockez le fichier. Pour plus d'informations, veuillez consulter Téléchargement des pilotes de base de données requis.

    L'exemple de code suivant montre comment ajouter le chemin vers le pilote Apache Hive. Après avoir exécuté cet exemple de code, AWS SCT enregistre les fichiers journaux dans le c:\sct dossier.

    SetGlobalSettings -save: 'true' -settings: '{ "hive_driver_file": "c:\\sct\\HiveJDBC42.jar", "log_folder": "c:\\sct", "console_log_folder": "c:\\sct" }' /

    Vous pouvez utiliser cet exemple et les exemples suivants sous Windows.

  3. Créez un nouveau AWS SCT projet.

    L'exemple de code suivant crée le hadoop_emr projet dans le c:\sct dossier.

    CreateProject -name: 'hadoop_emr' -directory: 'c:\sct' /
  4. Ajoutez votre cluster Hadoop source au projet.

    Utilisez la AddSourceCluster commande pour vous connecter au cluster Hadoop source. Assurez-vous de fournir des valeurs pour les paramètres obligatoires suivants : namehost,port, etuser. Les autres paramètres sont facultatifs.

    L'exemple de code suivant ajoute le cluster Hadoop source. Cet exemple définit HADOOP_SOURCE le nom du cluster source. Utilisez ce nom d'objet pour ajouter les services Hive et HDFS au projet et créer des règles de mappage.

    AddSourceCluster -name: 'HADOOP_SOURCE' -vendor: 'HADOOP' -host: 'hadoop_address' -port: '22' -user: 'hadoop_user' -password: 'hadoop_password' -useSSL: 'true' -privateKeyPath: 'c:\path\name.pem' -passPhrase: 'hadoop_passphrase' /

    Dans l'exemple précédent, remplacez hadoop_address par l'adresse IP de votre cluster Hadoop. Si nécessaire, configurez la valeur de l'option de port. Remplacez ensuite hadoop_user et hadoop_password par le nom de votre utilisateur Hadoop et le mot de passe de cet utilisateur. Pour path \ name, entrez le nom et le chemin du fichier PEM pour votre cluster Hadoop source.

  5. Enregistrez votre script CLI. Ajoutez ensuite les informations de connexion pour vos services Hive et HDFS.

Connexion à vos services source Hive et HDFS

Vous pouvez vous connecter à vos services sources Hive et HDFS à l'aide de l'interface de ligne de AWS SCT commande. Pour vous connecter à Apache Hive, utilisez le pilote JDBC Hive version 2.3.4 ou ultérieure. Pour plus d'informations, veuillez consulter Téléchargement des pilotes de base de données requis.

AWS SCTse connecte à Apache Hive avec l'utilisateur du hadoop cluster. Pour ce faire, utilisez les AddSourceClusterHDFS commandes AddSourceClusterHive et. Vous pouvez utiliser l'une des méthodes suivantes.

  • Créez un nouveau tunnel SSH.

    Pour createTunnel, saisissez true. Pourhost, entrez l'adresse IP interne de votre service Hive ou HDFS source. Pourport, entrez le port de service de votre service Hive ou HDFS.

    Entrez ensuite vos informations d'identification Hive ou HDFS pour user et. password Pour plus d'informations sur les tunnels SSH, consultez Configurer un tunnel SSH vers le nœud principal à l'aide de la redirection de port locale dans le Guide de gestion Amazon EMR.

  • Utilisez un tunnel SSH existant.

    Pour host, saisissez localhost. Pourport, entrez le port local à partir des paramètres du tunnel SSH.

  • Connectez-vous directement à vos services Hive et HDFS.

    Pourhost, entrez l'adresse IP ou le nom d'hôte de votre service Hive ou HDFS source. Pourport, entrez le port de service de votre service Hive ou HDFS. Entrez ensuite vos informations d'identification Hive ou HDFS pour user et. password

Pour vous connecter à Hive et HDFS dans l'interface de ligne de commande AWS SCT
  1. Ouvrez votre script CLI qui inclut les informations de connexion pour votre cluster Hadoop source. Assurez-vous d'utiliser le nom du cluster Hadoop que vous avez défini à l'étape précédente.

  2. Ajoutez votre service Hive source au projet.

    Utilisez la AddSourceClusterHive commande pour connecter le service Hive source. Assurez-vous de fournir des valeurs pour les paramètres obligatoires suivants : userpassword,cluster,name, etport. Les autres paramètres sont facultatifs.

    L'exemple de code suivant crée un tunnel AWS SCT pour fonctionner avec votre service Hive. Ce service source Hive s'exécute sur le même PC queAWS SCT. Cet exemple utilise le cluster HADOOP_SOURCE source de l'exemple précédent.

    AddSourceClusterHive -cluster: 'HADOOP_SOURCE' -name: 'HIVE_SOURCE' -host: 'localhost' -port: '10005' -user: 'hive_user' -password: 'hive_password' -createTunnel: 'true' -localPort: '10005' -remoteHost: 'hive_remote_address' -remotePort: 'hive_port' /

    L'exemple de code suivant permet de se connecter à votre service Hive sans tunnel.

    AddSourceClusterHive -cluster: 'HADOOP_SOURCE' -name: 'HIVE_SOURCE' -host: 'hive_address' -port: 'hive_port' -user: 'hive_user' -password: 'hive_password' /

    Dans les exemples précédents, remplacez hive_user et hive_password par le nom de votre utilisateur Hive et le mot de passe de cet utilisateur.

    Ensuite, remplacez hive_address et hive_port par l'adresse NameNode IP et le port de votre cluster Hadoop source.

    Pour hive_remote_address, vous pouvez utiliser la valeur par défaut 127.0.0.1 ou l'adresse NameNode IP de votre service Hive source.

  3. Ajoutez votre service HDFS source au projet.

    Utilisez la AddSourceClusterHDFS commande pour connecter le service HDFS source. Assurez-vous de fournir des valeurs pour les paramètres obligatoires suivants : userpassword,cluster,name, etport. Les autres paramètres sont facultatifs.

    Assurez-vous que votre utilisateur dispose des autorisations requises pour migrer des données depuis votre service HDFS source. Pour plus d'informations, veuillez consulter Autorisations d'utilisation de Hive comme source.

    L'exemple de code suivant crée un tunnel AWS SCT pour fonctionner avec votre service Apache HDFS. Cet exemple utilise le cluster HADOOP_SOURCE source que vous avez créé auparavant.

    AddSourceClusterHDFS -cluster: 'HADOOP_SOURCE' -name: 'HDFS_SOURCE' -host: 'localhost' -port: '9005' -user: 'hdfs_user' -password: 'hdfs_password' -createTunnel: 'true' -localPort: '9005' -remoteHost: 'hdfs_remote_address' -remotePort: 'hdfs_port' /

    Le code suivant se connecte à votre service Apache HDFS sans tunnel.

    AddSourceClusterHDFS -cluster: 'HADOOP_SOURCE' -name: 'HDFS_SOURCE' -host: 'hdfs_address' -port: 'hdfs_port' -user: 'hdfs_user' -password: 'hdfs_password' /

    Dans les exemples précédents, remplacez hdfs_user et hdfs_password par le nom de votre utilisateur HDFS et le mot de passe de cet utilisateur.

    Ensuite, remplacez hdfs_address et hdfs_port par l'adresse NameNode IP et le port de votre cluster Hadoop source.

    Pour hdfs_remote_address, vous pouvez utiliser la valeur par défaut 127.0.0.1 ou l'adresse NameNode IP de votre service Hive source.

  4. Enregistrez votre script CLI. Ajoutez ensuite les informations de connexion pour votre cluster Amazon EMR cible, ainsi que les commandes de migration.

Connexion à Amazon EMR en tant que cible

Vous pouvez vous connecter à votre cluster Amazon EMR cible à l'aide de l'AWS SCTinterface de ligne de commande. Pour ce faire, vous autorisez le trafic entrant et utilisez SSH. Dans ce cas, AWS SCT dispose de toutes les autorisations requises pour travailler avec votre cluster Amazon EMR. Pour plus d'informations, consultez la section Avant de vous connecter et de vous connecter au nœud principal à l'aide de SSH dans le guide de gestion Amazon EMR.

AWS SCTse connecte à Amazon EMR Hive avec l'utilisateur du hadoop cluster. Pour vous connecter à Amazon EMR Hive, utilisez le pilote JDBC Hive version 2.6.2.1002 ou supérieure. Pour plus d'informations, veuillez consulter Téléchargement des pilotes de base de données requis.

Pour vous connecter à Amazon EMR via l'interface de ligne de commande AWS SCT
  1. Ouvrez votre script CLI qui inclut les informations de connexion pour votre cluster Hadoop source. Ajoutez les informations d'identification Amazon EMR cibles dans ce fichier.

  2. Ajoutez votre cluster Amazon EMR cible au projet.

    L'exemple de code suivant ajoute le cluster Amazon EMR cible. Cet exemple définit HADOOP_TARGET le nom du cluster cible. Utilisez ce nom d'objet pour ajouter vos services Hive et HDFS ainsi qu'un dossier de compartiment Amazon S3 au projet et créer des règles de mappage.

    AddTargetCluster -name: 'HADOOP_TARGET' -vendor: 'AMAZON_EMR' -host: 'ec2-44-44-55-66.eu-west-1.EXAMPLE.amazonaws.com' -port: '22' -user: 'emr_user' -password: 'emr_password' -useSSL: 'true' -privateKeyPath: 'c:\path\name.pem' -passPhrase: '1234567890abcdef0!' -s3Name: 'S3_TARGET' -accessKey: 'AKIAIOSFODNN7EXAMPLE' -secretKey: 'wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY' -region: 'eu-west-1' -s3Path: 'doc-example-bucket/example-folder' /

    Dans l'exemple précédent, entrez les noms de vos AWS ressources et les informations de connexion Amazon EMR. Cela inclut l'adresse IP de votre cluster Amazon EMR, la clé AWS d'accès, la clé d'accès AWS secrète et le compartiment Amazon S3. Si nécessaire, configurez la valeur de la variable de port. Ensuite, remplacez emr_user et emr_password par le nom de votre utilisateur Amazon EMR et le mot de passe de cet utilisateur. Pour path \ name, entrez le nom et le chemin du fichier PEM pour votre cluster Amazon EMR cible. Pour plus d'informations, voir Télécharger le fichier PEM pour EMR Cluster Access.

  3. Ajoutez votre compartiment Amazon S3 cible au projet.

    L'exemple de code suivant ajoute le compartiment Amazon S3 cible. Cet exemple utilise le HADOOP_TARGET cluster que vous avez créé auparavant.

    AddTargetClusterS3 -cluster: 'HADOOP_TARGET' -Name: 'S3_TARGET' -accessKey: 'AKIAIOSFODNN7EXAMPLE' -secretKey: 'wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY' -region: 'eu-west-1' -s3Path: 'doc-example-bucket/example-folder' /

    Dans l'exemple précédent, entrez votre clé AWS d'accès, votre clé d'accès AWS secrète et votre compartiment Amazon S3.

  4. Ajoutez votre service Hive cible au projet.

    L'exemple de code suivant crée un tunnel AWS SCT pour fonctionner avec votre service Hive cible. Cet exemple utilise le cluster HADOOP_TARGET cible que vous avez créé auparavant.

    AddTargetClusterHive -cluster: 'HADOOP_TARGET' -name: 'HIVE_TARGET' -host: 'localhost' -port: '10006' -user: 'hive_user' -password: 'hive_password' -createTunnel: 'true' -localPort: '10006' -remoteHost: 'hive_address' -remotePort: 'hive_port' /

    Dans l'exemple précédent, remplacez hive_user et hive_password par le nom de votre utilisateur Hive et le mot de passe de cet utilisateur.

    Ensuite, remplacez hive_address par la valeur par défaut 127.0.0.1 ou par l'adresse NameNode IP de votre service Hive cible. Ensuite, remplacez hive_port par le port de votre service Hive cible.

  5. Ajoutez votre service HDFS cible au projet.

    L'exemple de code suivant crée un tunnel AWS SCT pour fonctionner avec votre service Apache HDFS. Cet exemple utilise le cluster HADOOP_TARGET cible que vous avez créé auparavant.

    AddTargetClusterHDFS -cluster: 'HADOOP_TARGET' -name: 'HDFS_TARGET' -host: 'localhost' -port: '8025' -user: 'hdfs_user' -password: 'hdfs_password' -createTunnel: 'true' -localPort: '8025' -remoteHost: 'hdfs_address' -remotePort: 'hdfs_port' /

    Dans l'exemple précédent, remplacez hdfs_user et hdfs_password par le nom de votre utilisateur HDFS et le mot de passe de cet utilisateur.

    Ensuite, remplacez hdfs_address et hdfs_port par l'adresse IP privée et le port du NameNode service HDFS cible.

  6. Enregistrez votre script CLI. Ajoutez ensuite des règles de mappage et des commandes de migration. Pour plus d'informations, veuillez consulter Migration d'Apache Hadoop vers Amazon EMR.