Jigar vous montre comment copier une grande
quantité de données depuis Amazon S3
vers HDFS sur un cluster EMR

Jigar_SEA

Je souhaite copier une grande quantité de données depuis Amazon Simple Storage Service (Amazon S3) vers mon cluster Amazon EMR. Quelle est la meilleure méthode pour y parvenir ?

Utilisez S3DistCp pour copier des données entre Amazon S3 et des clusters Amazon EMR. Par défaut, S3DistCp est installé sur les clusters Amazon EMR. Pour appeler S3DistCp, ajoutez-le en tant qu'étape dans votre cluster Amazon EMR au démarrage ou lorsque le cluster est en cours d'exécution.

Pour ajouter 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. 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 le statut de l'étape passe à Completed (Terminé), exécutez une commande similaire à ce qui suit pour vérifier que les fichiers ont été copiés sur 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.

Dépannage

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 trouver la trace de 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 la raison 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 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 à 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.


Cette page vous a-t-elle été utile ? Oui | Non

Retour au Centre de connaissances AWS Support

Vous avez besoin d'aide ? Consultez le site du Centre AWS Support

Date de publication : 27/09/2018