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.
Rubriques
- Conditions préalables à l'utilisation d'Apache Hadoop en tant que source
- Autorisations d'utilisation de Hive comme source
- Autorisations d'utilisation de HDFS en tant que source
- Autorisations d'utilisation de HDFS comme cible
- Connexion à Apache Hadoop en tant que source
- Connexion à vos services source Hive et HDFS
- Connexion à Amazon EMR en tant que cible
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'
distcp
utilitaire sur votre cluster source Apache Hadoop. Installez également l's3-dist-cp
utilitaire 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 lefs.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 lecore-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 :
READ
accès aux dossiers de données source et au compartiment Amazon S3 sourceREAD+WRITE
accè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 :
READ
accès au compartiment Amazon S3 cibleREAD+WRITE
accès au compartiment Amazon S3 intermédiaireREAD+WRITE
accè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 NameNodeEXECUTE+READ
pour tous les dossiers et fichiers sources que vous incluez dans le projet de migrationREAD+WRITE
pour letmp
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'EXECUTE
autorisation 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 :
EXECUTE
pour NameNode le cluster Amazon EMR cibleREAD+WRITE
pour 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
-
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. -
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.
-
Créez un nouveau AWS SCT projet.
L'exemple de code suivant crée le
hadoop_emr
projet dans lec:\sct
dossier.CreateProject -name: 'hadoop_emr' -directory: 'c:\sct' /
-
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 :name
host
,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 ensuitehadoop_user et hadoop_password par le nom de votre utilisateur
Hadoop
et le mot de passe de cet utilisateur. Pourpath \ name
, entrez le nom et le chemin du fichier PEM pour votre cluster Hadoop source. -
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
, saisisseztrue
. 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
, saisissezlocalhost
. Pourport
, entrez le port local à partir des paramètres du tunnel SSH. -
Connectez-vous directement à vos services Hive et HDFS.
Pour
host
, 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 pouruser
et.password
Pour vous connecter à Hive et HDFS dans l'interface de ligne de commande AWS SCT
-
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.
-
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 :user
password
,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 et le mot de passe de cet utilisateur.hive_password
par le nom de votre utilisateurEnsuite, 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éfaut127.0.0.1
ou l'adresse NameNode IP de votre service Hive source. -
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 :user
password
,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 et le mot de passe de cet utilisateur.hdfs_password
par le nom de votre utilisateurEnsuite, 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éfaut127.0.0.1
ou l'adresse NameNode IP de votre service Hive source. -
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
-
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.
-
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
par le nom de votre utilisateur Amazon EMR et le mot de passe de cet utilisateur. Pouremr_password
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. -
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.
-
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 et le mot de passe de cet utilisateur.hive_password
par le nom de votre utilisateurEnsuite, remplacez
hive_address
par la valeur par défaut127.0.0.1
ou par l'adresse NameNode IP de votre service Hive cible. Ensuite, remplacezhive_port par le port
de votre service Hive cible. -
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 et le mot de passe de cet utilisateur.hdfs_password
par le nom de votre utilisateurEnsuite, remplacez
hdfs_address
ethdfs_port
par l'adresse IP privée et le port du NameNode service HDFS cible. -
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.