Comment copier un gros volume de données à partir d'Amazon S3 vers HDFS dans mon cluster Amazon EMR ?

Lecture de 4 minute(s)
0

Je souhaite copier une grande quantité de données à partir d'Amazon Simple Storage Service (Amazon S3) vers mon cluster Amazon EMR.

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 ajouter une étape S3DistCp à un cluster en cours d'exécution à l'aide de l'interface de la ligne de commande AWS (AWS CLI), consultez Ajout de S3DistCp en tant qu'étape dans un cluster.

Remarque : Si vous recevez des messages d'erreurs pendant l'exécution de commandes AWS CLI, assurez-vous d'utiliser la version la plus récente d'AWS CLI.

Pour ajouter une étape S3DistCp à l'aide de la console, procédez comme suit :

1.    Ouvrez la console Amazon EMR, puis sélectionnez 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 Emplacement JAR, saisissez command-runner.jar. Pour plus d'informations, consultez la rubrique Exécuter des commandes et des scripts sur un cluster Amazon EMR.
Pour Arguments, saisissez des options du type : 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/

Remarque : Une bonne pratique consiste à regrouper les petits fichiers dans quelques fichiers de taille plus importante à l'aide de l'option groupBy, puis de comprimer les fichiers de taille importante à l'aide de l'option outputCodec.

Résolution

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

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 : journaux provenant de logiciels non Amazon, tels qu'Apache et Hadoop.
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 la cause principale 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 message suivant apparaît dans le journal stderr de l'étape, cela implique que la tâche S3DistCp a échoué, 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 message suivant apparaît dans le journal stderr de l'étape, cela implique que la tâche S3DistCp n'est pas parvenue à 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 Erreurs d'autorisations.


Informations connexes

Afficher les fichiers journaux

AWS OFFICIEL
AWS OFFICIELA mis à jour il y a 2 ans