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.
S3 DistCp (s3-dist-cp)
Apache DistCp est un outil open source que vous pouvez utiliser pour copier de grandes quantités de données. S3 DistCp est similaire DistCp, mais optimisé pour fonctionner avec AWS, en particulier, Amazon S3. La commande pour S3 DistCp dans Amazon EMR version 4.0 et versions ultérieures ests3-dist-cp
, que vous ajoutez en tant qu'étape dans un cluster ou sur la ligne de commande. Grâce à S3DistCp, vous pouvez copier efficacement de grandes quantités de données d'Amazon S3 vers HDFS lesquelles elles peuvent être traitées par les étapes suivantes dans votre EMR cluster Amazon. Vous pouvez également utiliser S3 DistCp pour copier des données entre des compartiments Amazon S3 ou depuis HDFS Amazon S3. S3 DistCp est plus évolutif et plus efficace pour copier en parallèle un grand nombre d'objets entre des compartiments et des AWS comptes.
Pour des commandes spécifiques démontrant la flexibilité de S3DistCP dans des scénarios réels, consultez Sept conseils d'utilisation de S3 DistCp
Par exemple DistCp, S3 DistCp utilise MapReduce pour copier de manière distribuée. Il partage les tâches de copie, de gestion des erreurs, de récupération et de création de rapports entre plusieurs serveurs. Pour plus d'informations sur le projet DistCp open source Apache, consultez le DistCpguide
Si S3 DistCp ne parvient pas à copier tout ou partie des fichiers spécifiés, l'étape du cluster échoue et renvoie un code d'erreur différent de zéro. Dans ce cas, S3 DistCp ne nettoie pas les fichiers partiellement copiés.
Important
S3 DistCp ne prend pas en charge les noms de compartiment Amazon S3 contenant le caractère de soulignement.
S3 DistCp ne prend pas en charge la concaténation pour les fichiers Parquet. Utilisez PySpark plutôt. Pour plus d'informations, consultez la section Concaténation de fichiers de parquet
Pour éviter les erreurs de copie lorsque vous utilisez S3DistCP pour copier un seul fichier (au lieu d'un répertoire) depuis S3 vers, HDFS utilisez Amazon EMR version 5.33.0 ou ultérieure, ou Amazon EMR version 6.3.0 ou ultérieure.
DistCp Options S3
Bien que similaire à DistCp, S3 DistCp prend en charge un ensemble d'options différent pour modifier la façon dont il copie et compresse les données.
Lorsque vous appelez S3DistCp, vous pouvez spécifier les options décrites dans le tableau suivant. Les options sont ajoutées à l'étape à l'aide de la liste d'arguments. Des exemples d'DistCp arguments S3 sont présentés dans le tableau suivant.
Option | Description | Obligatoire |
---|---|---|
‑‑src=LOCATION
|
Emplacement des données à copier. Il peut s'agir d'un emplacement HDFS ou d'un emplacement Amazon S3. Exemple : ImportantS3 DistCp ne prend pas en charge les noms de compartiment Amazon S3 contenant le caractère de soulignement. |
Oui |
‑‑dest=LOCATION
|
Destination des données. Il peut s'agir d'un emplacement HDFS ou d'un emplacement Amazon S3. Exemple : ImportantS3 DistCp ne prend pas en charge les noms de compartiment Amazon S3 contenant le caractère de soulignement. |
Oui |
‑‑srcPattern=PATTERN
|
Expression régulière Si l'argument de l'expression régulière contient des caractères spéciaux, tels qu'un astérisque (*), l'expression régulière ou la chaîne Exemple : |
Non |
‑‑groupBy=PATTERN
|
Expression régulière Les parenthèses indiquent comment les fichiers doivent être regroupés, en combinant tous les éléments qui correspondent à l'instruction entre parenthèses en un fichier de sortie unique. Si l'expression régulière n'inclut pas d'instruction entre parenthèses, le cluster échoue à l'DistCp étape S3 et renvoie une erreur. Si l'argument de l'expression régulière contient des caractères spéciaux, tels qu'un astérisque (*), l'expression régulière ou la chaîne Lorsque Exemple : |
Non |
‑‑targetSize=SIZE
|
Taille, en mébioctets (Mio), des fichiers à créer en fonction de l'option Si les fichiers concaténés par Exemple : |
Non |
‑‑appendToLastFile |
Spécifie le comportement de S3 DistCp lors de la copie vers des fichiers depuis Amazon S3 vers HDFS lesquels ils sont déjà présents. Il ajoute les données des nouveaux fichiers dans les fichiers existants. Si vous utilisez |
Non |
‑‑outputCodec=CODEC
|
Spécifie le codec de compression à utiliser pour les fichiers copiés. Cela peut prendre les valeurs : Exemple : |
Non |
‑‑s3ServerSideEncryption
|
Garantit que les données cibles sont transférées SSL et chiffrées automatiquement dans Amazon S3 à l'aide d'une AWS clé côté service. Lorsque vous récupérez des données à l'aide de S3DistCp, les objets sont automatiquement déchiffrés. Si vous tentez de copier un objet non chiffré vers un compartiment Amazon S3 requérant le chiffrement, l'opération échoue. Pour plus d'informations, consultez Utilisation du chiffrement des données. Exemple : |
Non |
‑‑deleteOnSuccess
|
Si l'opération de copie est réussie, cette option oblige S3 DistCp à supprimer les fichiers copiés de l'emplacement source. Cela est utile si vous copiez des fichiers de sortie, tels que les fichiers journaux, d'un emplacement à un autre comme une tâche planifiée, et que vous ne voulez pas copier deux fois les mêmes fichiers. Exemple : |
Non |
‑‑disableMultipartUpload
|
Désactive l'utilisation du téléchargement partitionné. Exemple : |
Non |
‑‑multipartUploadChunkSize=SIZE
|
Taille, en Mio, de chaque partie d'un chargement partitionné sur Amazon S3. S3 DistCp utilise le téléchargement partitionné lorsqu'il copie des données dont la Exemple : |
Non |
‑‑numberFiles
|
Ajoute aux fichiers de sortie des numéros séquentiels. Le compteur démarre à 0, à moins qu'une autre valeur soit spécifiée par Exemple : |
Non |
‑‑startingIndex=INDEX
|
Utilisé avec Exemple : |
Non |
‑‑outputManifest=FILENAME
|
Crée un fichier texte, compressé avec Gzip, qui contient une liste de tous les fichiers copiés par S3DistCp. Exemple : |
Non |
‑‑previousManifest=PATH
|
Lit un fichier manifeste créé lors d'un appel précédent à S3 à DistCp l'aide de l' Exemple : |
Non |
‑‑requirePreviousManifest |
Nécessite un manifeste créé lors d'un appel précédent à S3DistCp. Si la valeur spécifiée est false, aucune erreur n'est générée lorsqu'un manifeste précédent n'est pas spécifié. Par défaut, la valeur est true. |
Non |
‑‑copyFromManifest
|
Inverse le comportement de S3 Exemple : |
Non |
‑‑s3Endpoint=ENDPOINT |
Spécifie le point de terminaison Amazon S3 à utiliser lors du chargement d'un fichier. Cette option définit le point de terminaison pour la source et la destination. S'il n'est pas défini, le point de terminaison par défaut est Exemple : |
Non |
‑‑storageClass=CLASS |
La classe de stockage à utiliser lorsque la destination est Amazon S3. Les valeurs valides sont STANDARD et REDUCED _REDUNDANCY. Si cette option n'est pas spécifiée, S3 DistCp essaie de préserver la classe de stockage. Exemple : |
Non |
‑‑srcPrefixesFile=PATH |
un fichier texte dans Amazon S3 (s3 ://), HDFS (hdfs :///) ou dans un système de fichiers local (file :/) qui contient une liste de S'il Exemple : |
Non |
Outre les options ci-dessus, S3 DistCp implémente l'interface Tool
Ajouter S3 DistCp en tant qu'étape dans un cluster
Vous pouvez appeler S3 DistCp en l'ajoutant en tant qu'étape dans votre cluster. Les étapes peuvent être ajoutées à un cluster au lancement ou à un cluster en cours d'exécution à l'aide de la consoleCLI, ouAPI. Les exemples suivants illustrent l'ajout d'une DistCp étape S3 à un cluster en cours d'exécution. Pour plus d'informations sur l'ajout d'étapes à un cluster, consultez la section Soumettre un travail à un cluster dans le Amazon EMR Management Guide.
Pour ajouter une DistCp étape S3 à un cluster en cours d'exécution à l'aide du AWS CLI
Pour plus d'informations sur l'utilisation EMR des commandes Amazon dans le AWS CLI, consultez la référence des AWS CLI commandes.
-
Pour ajouter une étape à un cluster qui appelle S3DistCp, transmettez les paramètres qui spécifient comment S3 DistCp doit effectuer l'opération de copie en tant qu'arguments.
L'exemple suivant copie les journaux des démons de Amazon S3 dans
hdfs:///output
. Dans la commande suivante :-
‑‑cluster-id
spécifie le cluster -
Jar
est l'emplacement du DistCp JAR fichier S3. Pour un exemple d'exécution d'une commande sur un cluster à l'aide de command-runner.jar, voir Soumettre une JAR étape personnalisée pour exécuter un script ou une commande. -
Args
est une liste séparée par des virgules des paires nom-valeur des options à transmettre à S3. DistCp Pour obtenir la liste complète des options disponibles, consultez DistCp Options S3.
Pour ajouter une étape de DistCp copie S3 à un cluster en cours d'exécution, placez ce qui suit dans un JSON fichier enregistré dans Amazon S3 ou dans votre système de fichiers local, comme dans cet
exemple. RemplacezmyStep.json
j-3GYXXXXXX9IOK
avec votre identifiant de cluster et remplacezmybucket
avec le nom de votre compartiment Amazon S3.[ { "Name":"S3DistCp step", "Args":["s3-dist-cp","‑‑s3Endpoint=s3.amazonaws.com","‑‑src=s3://mybucket/logs/j-3GYXXXXXX9IOJ/node/","‑‑dest=hdfs:///output","‑‑srcPattern=.*[a-zA-Z,]+"], "ActionOnFailure":"CONTINUE", "Type":"CUSTOM_JAR", "Jar":"command-runner.jar" } ]
aws emr add-steps ‑‑cluster-id
j-3GYXXXXXX9IOK
‑‑steps file://./myStep.json -
Exemple Copiez les fichiers journaux depuis Amazon S3 vers HDFS
Cet exemple montre également comment copier des fichiers journaux stockés dans un compartiment Amazon S3 en HDFS ajoutant une étape à un cluster en cours d'exécution. Dans cet exemple, l'option ‑‑srcPattern
est utilisée pour limiter les données copiées dans les journaux des démons.
Pour copier des fichiers journaux depuis Amazon S3 vers HDFS l'‑‑srcPattern
option, placez ce qui suit dans un JSON fichier enregistré dans Amazon S3 ou dans votre système de fichiers local, comme dans cet
exemple. Remplacez myStep.json
j-3GYXXXXXX9IOK
avec votre identifiant de cluster et remplacez mybucket
avec le nom de votre compartiment Amazon S3.
[ { "Name":"S3DistCp step", "Args":["s3-dist-cp","‑‑s3Endpoint=s3.amazonaws.com","‑‑src=s3://mybucket/logs/j-3GYXXXXXX9IOJ/node/","‑‑dest=hdfs:///output","‑‑srcPattern=.*daemons.*-hadoop-.*"], "ActionOnFailure":"CONTINUE", "Type":"CUSTOM_JAR", "Jar":"command-runner.jar" } ]