Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
S3DistCp (s3-dist-cp)
Apache DistCp es una herramienta de código abierto que puede utilizar para copiar
grandes cantidades de datos. S3DistCp es una extensión de DistCp que está optimizada para trabajar con AWS, especialmente
con Amazon S3. El comando para S3DistCp en Amazon EMR versión 4.0 y posteriores es
s3-dist-cp
, que se añade como un paso en un clúster o en la línea de comandos. Mediante S3DistCp
puede copiar de forma eficaz grandes cantidades de datos desde Amazon S3 en HDFS,
donde se pueden procesar en pasos posteriores en el clúster de Amazon EMR. También
puede utilizar S3DistCp para copiar datos entre buckets de Amazon S3 o desde HDFS
a Amazon S3. S3DistCp es más escalable y eficiente para copiar en paralelo un gran
número de objetos en buckets y entre cuentas de AWS.
Para ver comandos específicos que demuestran la flexibilidad de S3DistCP en situaciones
del mundo real, consulte Seven Tips for Using S3DistCp
Al igual que DistCp, S3DistCp usa MapReduce para realizar la copia de manera distribuida.
Comparte las tareas de copia, tratamiento de errores, recuperación y elaboración de
informes entre varios servidores. Para obtener más información sobre el proyecto de
código abierto Apache DistCp, consulte la guía de DistCp
Si S3DistCp no puede copiar algunos o todos los archivos especificados, se produce un error en el paso de clúster y devuelve un código de error distinto de cero. Si esto ocurre, S3DistCp no limpia los archivos copiados parcialmente.
S3DistCp no es compatible con nombres de bucket de Amazon S3 que contengan caracteres de guión bajo.
S3DistCP no admite la concatenación para archivos Parquet. Use PySpark en su lugar.
Para obtener más información, consulte Concatenar archivos Parquet en Amazon EMR
Opciones de S3DistCp
Cuando llama a S3DistCp, puede especificar opciones que cambian la forma en la que copia y comprime los datos. Se describen en la tabla siguiente. Las opciones se añaden al paso utilizando la lista de argumentos. En la tabla siguiente se muestran ejemplos de argumentos de S3DistCp.
Opción | Descripción | Obligatorio |
---|---|---|
--src=LOCATION
|
Ubicación de los datos que copiar. Puede ser una ubicación de HDFS o Amazon S3. Ejemplo: S3DistCp no es compatible con nombres de bucket de Amazon S3 que contengan caracteres de guión bajo. |
Sí |
--dest=LOCATION
|
Destino de los datos. Puede ser una ubicación de HDFS o Amazon S3. Ejemplo: S3DistCp no es compatible con nombres de bucket de Amazon S3 que contengan caracteres de guión bajo. |
Sí |
--srcPattern=PATTERN
|
Una expresión regular Si el argumento de expresión regular contiene caracteres especiales, como un asterisco
(*), la expresión regular o toda la cadena Ejemplo: |
No |
--groupBy=PATTERN
|
Una expresión regular Los paréntesis indican cómo deberían agruparse los archivos, todos los elementos que coincidan con la instrucción parentética se combinan en un único archivo de salida. Si la expresión regular no incluye una instrucción parentética, se produce un error en el clúster en el paso S3DistCp y devuelve un error. Si el argumento de expresión regular contiene caracteres especiales, como un asterisco
(*), la expresión regular o toda la cadena Cuando se especifica Ejemplo: |
No |
--targetSize=SIZE
|
El tamaño, en mebibytes (MiB), de los archivos a crear en función de la opción Si los archivos concatenados por Ejemplo: |
No |
--appendToLastFile |
Especifica el comportamiento de S3DistCp cuando se copia a archivos desde Amazon S3
a HDFS ya están presentes. Añade los nuevos datos de archivo a archivos existentes.
Si utiliza |
No |
--outputCodec=CODEC
|
Especifica el códec de compresión que utilizar para los archivos copiados. Esto puede
tomar los valores: Ejemplo: |
No |
--s3ServerSideEncryption
|
Garantiza que los datos de destino se transfieran mediante SSL y se cifren automáticamente en Amazon S3 con una clave del lado de servicio de AWS. Cuando se recuperan datos con S3DistCp, los objetos se descifran automáticamente. Si intenta copiar un objeto sin cifrar en un bucket de Amazon S3 con cifrado requerido, la operación produce un error. Para obtener más información, consulte el tema relacionado con el uso del cifrado de datos. Ejemplo: |
No |
--deleteOnSuccess
|
Si la operación de copia se realiza correctamente, esta opción hace que S3DistCp elimine los archivos copiados desde la ubicación de origen. Esto resulta útil si está copiando archivos de salida, como archivos de registro, desde una ubicación a otra como una tarea programada y no desea copiar los mismos archivos dos veces. Ejemplo: |
No |
--disableMultipartUpload
|
Deshabilita el uso de la carga multiparte. Ejemplo: |
No |
--multipartUploadChunkSize=SIZE
|
El tamaño, en MiB, del tamaño de parte de la carga multiparte. De forma predeterminada, utiliza la carga multiparte al escribir en Amazon S3. El tamaño de fragmento predeterminado es de 16 MiB. Ejemplo: |
No |
--numberFiles
|
Añade archivos de salida con los números secuenciales. El recuento comienza en 0 a
menos que se especifique un valor diferente mediante Ejemplo: |
No |
--startingIndex=INDEX
|
Utilizado con Ejemplo: |
No |
--outputManifest=FILENAME
|
Crea un archivo de texto, comprimido con Gzip, que contiene una lista de todos los archivos copiados por S3DistCp. Ejemplo: |
No |
--previousManifest=PATH
|
Lee un archivo de manifiesto que se ha creado durante una llamada anterior a S3DistCp
mediante la marca Ejemplo: |
No |
--requirePreviousManifest |
Requiere un manifiesto anterior creado durante una llamada anterior a S3DistCp. Si se define como false, no se genera ningún error cuando no se especifica un manifiesto anterior. El valor predeterminado es true. |
No |
--copyFromManifest
|
Invierte el comportamiento de Ejemplo: |
No |
--s3Endpoint=ENDPOINT |
Especifica el punto de enlace de Amazon S3 que utilizar a la hora de cargar un archivo.
Esta opción establece el punto de enlace para el origen y el destino. Si no se define,
el punto de enlace predeterminado es Ejemplo: |
No |
--storageClass=CLASS |
La clase de almacenamiento que utilizar cuando el destino es Amazon S3. Los valores válidos son STANDARD y REDUCED_REDUNDANCY. Si esta opción no se especifica, S3DistCp intenta conservar la clase de almacenamiento. Ejemplo: |
No |
--srcPrefixesFile=PATH |
Un archivo de texto existente en Amazon S3 (s3://), en HDFS (hdfs:///) o en un sistema
de archivos local (file:/) que contiene una lista de prefijos Si se proporciona Ejemplo: |
No |
Además de las opciones anteriores, S3DistCp implementa la interfaz Tool
Agregar S3DistCp como paso en un clúster
Puede llamar a S3DistCp añadiéndolo como paso en el clúster. Los pasos se pueden añadir a un clúster en el momento de su lanzamiento o a un clúster en ejecución mediante la consola, la CLI o la API. Los siguientes ejemplos muestran como se añade un paso de S3DistCp a un clúster en ejecución. Para obtener más información acerca de la adición de pasos a un clúster, consulte Enviar trabajo a un clúster en la Guía de administración de Amazon EMR.
Para añadir un paso de S3DistCp a un clúster en ejecución utilizando la AWS CLI
Para obtener más información sobre cómo usar los comandos de Amazon EMR en la AWS CLI, consulte https://docs.aws.amazon.com/cli/latest/reference/emr.
-
Para añadir un paso a un clúster que llama a S3DistCp, transfiera los parámetros que especifican cómo debe realizar S3DistCp la operación de copia como argumentos.
El siguiente ejemplo copia los registros del demonio desde Amazon S3 a
hdfs:///output
. En el comando siguiente:-
--cluster-id
especifica el clúster -
Jar
es la ubicación del archivo JAR S3DistCp -
Args
es una lista separada por comas de las parejas de nombre-valor opcionales que transferir a S3DistCp. Para ver una lista completa de las opciones disponibles, consulte Opciones de S3DistCp.
Para añadir un paso de copia de S3DistCp a un clúster en ejecución, coloque lo siguiente en un archivo JSON guardado en Amazon S3 o en el sistema de archivos local, como
en este ejemplo. ReemplazarmyStep.json
j-3GYXXXXXX9IOK
por el ID del clúster y reemplacemybucket
por el nombre del Amazon S3 bucket.[ { "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 -
ejemplo Copie los archivos de registro desde Amazon S3 a HDFS
Este ejemplo también muestra cómo copiar archivos de registro almacenados en un bucket
de Amazon S3 en HDFS añadiendo un paso a un clúster en ejecución. En este ejemplo,
la opción --srcPattern
se utiliza para limitar los datos copiados en los registros del demonio.
Para copiar los archivos de registro desde Amazon S3 en HDFS mediante la opción --srcPattern
, coloque lo siguiente en un archivo JSON guardado en Amazon S3 o en el sistema de
archivos local, como
en este ejemplo. Reemplazar myStep.json
j-3GYXXXXXX9IOK
por el ID del clúster y reemplace mybucket
por el nombre del Amazon S3 bucket.
[ { "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" } ]