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. S3DistCpes similar a Amazon S3 DistCp, pero está optimizado para funcionar con AWSél. El comando que se S3DistCp utiliza en la versión 4.0 y posteriores de Amazon EMR es s3-dist-cp el comando que se agrega como un paso en un clúster o en la línea de comandos. Con él S3DistCp, puede copiar de manera eficiente grandes cantidades de datos de Amazon S3 a HDFS, donde se pueden procesar mediante pasos posteriores en su clúster de Amazon EMR. También puede utilizarlos 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 grandes cantidades de objetos entre cubos y entre cuentas. AWS
Para ver comandos específicos que demuestran la flexibilidad de S3DistCP en situaciones del mundo real, consulte Siete consejos de uso en el blog S3DistCp
Por ejemplo DistCp, se S3DistCp usa MapReduce para copiar de forma 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 DistCp abierto Apache, consulte la DistCp guía
Si no puede copiar algunos o todos los archivos especificados, S3DistCp se produce un error en el paso del clúster y se devuelve un código de error distinto de cero. Si esto ocurre, S3DistCp no limpia los archivos parcialmente copiados.
importante
S3DistCp no admite nombres de bucket de Amazon S3 que contengan el carácter de subrayado.
S3DistCp no admite la concatenación de archivos de Parquet. Utilice en su lugar. PySpark Para obtener más información, consulte Concatenación de archivos Parquet en Amazon EMR
Para evitar errores de copia al utilizar S3DistCP para copiar un único archivo (en lugar de un directorio) de S3 a HDFS, utilice Amazon EMR versión 5.33.0 o posterior, o Amazon EMR versión 6.3.0 o posterior.
S3DistCp opciones
Aunque es similar a DistCp, S3DistCp admite un conjunto diferente de opciones para cambiar la forma en que copia y comprime los datos.
Al llamar S3DistCp, puede especificar las opciones que 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 los S3DistCp argumentos.
| Opción | Description (Descripción) | Obligatorio |
|---|---|---|
--src=LOCATION
|
Ubicación de los datos que copiar. Puede ser una ubicación de HDFS o Amazon S3. Ejemplo: importanteS3DistCp no admite nombres de bucket de Amazon S3 que contengan el carácter de subrayado. |
Sí |
--dest=LOCATION
|
Destino de los datos. Puede ser una ubicación de HDFS o Amazon S3. Ejemplo: importanteS3DistCp no admite nombres de bucket de Amazon S3 que contengan el carácter de subrayado. |
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
|
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 sentencia entre paréntesis, el clúster produce un error en el S3DistCp paso 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 S3DistCp al copiar archivos de Amazon S3 a HDFS que 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 mediante una clave del lado del AWS servicio. Al recuperar datos utilizando 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 S3DistCp que los archivos copiados se eliminen de 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, de cada parte de una carga multiparte de Amazon S3. S3DistCp utiliza la carga multiparte cuando copia datos de un tamaño superior al. 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 creó durante una llamada anterior para S3DistCp usar la 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 conexión 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 no se especifica esta opción, S3DistCp intenta conservar la clase de almacenamiento. Ejemplo: |
No |
--srcPrefixesFile=PATH |
un archivo de texto en Amazon S3 (s3://), HDFS (hdfs:///) o sistema de archivos local (file:/) que contiene una lista de prefijos Si Ejemplo: |
No |
Además de las opciones anteriores, S3DistCp implementa la interfaz de herramientas,
Agregar S3DistCp como paso en un clúster
Puedes llamar S3DistCp agregándolo como un paso en tu 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 cómo agregar un S3DistCp paso a un clúster en ejecución. Para obtener más información sobre cómo agregar pasos a un clúster, consulte Enviar trabajo a un clúster en la Guía de administración de Amazon EMR.
Para agregar un S3DistCp paso a un clúster en ejecución, utilice el AWS CLI
Para obtener más información sobre el uso de los comandos de Amazon EMR AWS CLI, consulte la referencia de AWS CLI comandos.
-
Para añadir un paso a un clúster que realiza llamadas S3DistCp, transfiera como argumentos los parámetros que especifican cómo se S3DistCp debe realizar la operación de copia.
El siguiente ejemplo copia registros de daemon desde Amazon S3 a
hdfs:///output. En el comando siguiente:-
--cluster-idespecifica el clúster -
Jares la ubicación del archivo S3DistCp JAR. Para ver un ejemplo de cómo ejecutar un comando en un clúster mediante command-runner.jar, consulte Envío de un paso JAR personalizado para ejecutar un script o un comando. -
Argses una lista separada por comas de los pares nombre-valor de las opciones a las que se deben transferir. S3DistCp Para ver una lista completa de las opciones disponibles, consulte S3DistCp opciones.
Para añadir un paso de S3DistCp copia a un clúster en ejecución, coloque lo siguiente en un archivo JSON guardado en Amazon S3 o en su sistema de archivos local, como
en este ejemplo.myStep.jsonj-3GYXXXXXX9IOKSustitúyalo por su ID de clúster yamzn-s3-demo-bucketsustitúyalo por el nombre de su bucket de Amazon S3.[ { "Name":"S3DistCp step", "Args":["s3-dist-cp","--s3Endpoint=s3.amazonaws.com","--src=s3://amzn-s3-demo-bucket/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-idj-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 agregando 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 daemon.
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. myStep.jsonj-3GYXXXXXX9IOKSustitúyalo por su ID de clúster y amzn-s3-demo-bucket sustitúyalo por el nombre de su bucket de Amazon S3.
[ { "Name":"S3DistCp step", "Args":["s3-dist-cp","--s3Endpoint=s3.amazonaws.com","--src=s3://amzn-s3-demo-bucket/logs/j-3GYXXXXXX9IOJ/node/","--dest=hdfs:///output","--srcPattern=.*daemons.*-hadoop-.*"], "ActionOnFailure":"CONTINUE", "Type":"CUSTOM_JAR", "Jar":"command-runner.jar" } ]