Comment puis-je transférer un volume important de données depuis Amazon S3 dans HDFS vers mon cluster Amazon EMR ?

Dernière mise à jour : 11/02/2020

Je souhaite transférer un volume important de données depuis Amazon Simple Storage Service (Amazon S3) vers mon cluster Amazon EMR. Quelle est la meilleure façon de procéder ?

Brève description

Utilisez S3DistCp pour copier des données entre Amazon S3 et des clusters Amazon EMR. S3DistCp est installé sur les clusters Amazon EMR par défaut. Pour appeler S3DistCP, insérez-le parmi les étapes au lancement ou après l'exécution du cluster.

Résolution

Pour insérer une étape S3DistCp à un cluster en cours d'exécution à l'aide de l'interface de ligne de commande AWS (AWS CLI), consultez Ajout de S3DistCp en tant qu'étape dans un cluster.

Remarque : si vous recevez des erreurs lors de l'exécution des commandes depuis l'interface de ligne de commande AWS, assurez-vous que vous utilisez la version AWS CLI la plus récente.

Pour ajouter une étape S3DistCp à l'aide de la console :

1.    Ouvrez la console Amazon EMR, puis choisissez Clusters.

2.    Choisissez le cluster Amazon EMR dans la liste, puis choisissez Steps (Étapes).

3.    Choisissez Add step (Ajouter une étape), puis choisissez les options suivantes :

Pour Type d'étape, choisissez JAR personnalisé.
Pour Name (Nom), entrez un nom pour l'étape S3DistCp.
Pour JAR location (emplacement JAR), entrez command-runner.jar. Pour plus d'informations, consultez Exécuteur de commandes.
Pour Arguments, entrez des options similaires à ce qui suit : s3-dist-cp --src=s3://s3distcp-source/input-data --dest=hdfs://output-folder1.
Pour Action on failure (Action en cas d'échec), choisissez Continue (continuer).

4.    Choisissez Ajouter.

5.    Lorsque l' état de l'étape passe à Terminé, vérifiez que les fichiers ont été copiés dans le cluster :

$ hadoop fs -ls hdfs:///output-folder1/

Résolution

Pour résoudre les problèmes liés à S3DistCp, vérifiez les journaux d'étape et de tâche.

Journaux d'étape :

1.    Ouvrez la console Amazon EMR, puis choisissez Clusters.

2.    Choisissez le cluster Amazon EMR dans la liste, puis choisissez Steps (Étapes).

3.    Dans la colonne Log files (Fichiers journaux), choisissez le journal d'étape approprié :

controller : informations sur le traitement de l’étape. Si l'étape échoue lors de son chargement, vous pouvez retracer la pile dans ce journal.
syslog : décrit l'exécution des tâches Hadoop dans l’étape.
stderr
 : canal d'erreur standard de Hadoop lors du traitement de l’étape.
stdout
 : canal de sortie standard de Hadoop lors du traitement de l’étape.

Si vous ne trouvez pas le motif de l'échec dans les journaux d'étape, vérifiez les journaux de tâche S3DistCp :

1.    Ouvrez la console Amazon EMR, puis choisissez Clusters.

2.    Choisissez le cluster Amazon EMR dans la liste, puis choisissez Steps (Étapes).

3.    Dans la colonne Log files (Fichiers journaux), choisissez View jobs (Afficher les travaux).

4.    Dans la colonne Actions, choisissez View tasks (Afficher les tâches).

5.    Si des tâches ont échoué, choisissez View attempts (Afficher les tentatives) pour voir les journaux de tâche.

Erreurs courantes

La tâche de réducteur a échoué en raison d'un manque de mémoire.

Si un message d'erreur similaire au suivant apparaît dans le journal stderr de l'étape, la tâche S3DistCp échoue car la quantité de mémoire était insuffisante pour traiter les tâches du réducteur :

Container killed on request. Exit code is 143
Container exited with a non-zero exit code 143
Container [pid=19135,containerID=container_1494287247949_0005_01_000003] is running beyond virtual memory limits. Current usage: 569.0 MB of 1.4 GB physical memory used; 3.0 GB of 3.0 GB virtual memory used. Killing container.

Pour résoudre ce problème, utilisez une des options suivantes pour augmenter les ressources de mémoire pour les tâches du réducteur :

Erreur d'autorisation Amazon S3 :

Si un message d'erreur similaire au suivant apparaît dans le journal stderr de l'étape, la tâche S3DistCp n'est pas parvenu à accéder à Amazon S3 en raison d'un problème d'autorisations :

Exception in thread "main" com.amazonaws.services.s3.model.AmazonS3Exception: Access Denied (Service: Amazon S3; Status Code: 403; Error Code: AccessDenied; Request ID: REQUEST_ID

Pour résoudre ce problème, consultez Permissions errors (Erreurs d'autorisations).


Cet article vous a-t-il été utile ?


Besoin d'aide pour une question technique ou de facturation ?