Todos los productos
Search
Centro de documentos

E-MapReduce:Guía de usuario de JindoDistCp

Última actualización: Sep 04, 2026

Este tema describe cómo utilizar JindoDistCp.

Qué es JindoDistCp

JindoDistCp es una herramienta de copia distribuida de archivos desarrollada por el equipo de Alibaba Cloud Data Lake Storage para transferencias de datos a gran escala dentro de un clúster y entre clústeres. Utiliza MapReduce para distribuir archivos, gestionar errores y recuperarse de fallos. Toma como entrada una lista de archivos y directorios para las tareas de MapReduce, donde cada tarea copia una parte de la lista de origen. Admite completamente escenarios de copia de datos entre Hadoop Distributed File System (HDFS), OSS-HDFS, OSS y S3. Ofrece diversos parámetros y estrategias de copia personalizables. Está optimizado para copiar datos de HDFS a OSS-HDFS. Mediante un CopyCommitter personalizado, realiza copias sin cambio de nombre (No-Rename) y garantiza la consistencia de los datos al finalizar. Sus funciones están totalmente alineadas con las de S3 DistCp y HDFS DistCp. Ofrece mejoras significativas de rendimiento respecto a HDFS DistCp. JindoDistCp está diseñado para ser una herramienta de copia de datos eficiente, estable y segura.

Requisitos del entorno

  • JDK 1.8.0 o posterior.

  • Hadoop 2.3 o posterior. Debe descargar la versión más reciente del archivo jindo-distcp-tool-x.x.x.jar. Este archivo JAR se incluye en el paquete jindosdk-${version}.tar.gz. Tras descomprimir el paquete, encontrará el archivo JAR en el directorio tools/. Para obtener más información, consulte JindoData downloads.

    Nota

    JindoDistCp se despliega en clústeres que ejecutan EMR V5.6.0 o posterior y EMR V3.40.0 o posterior. Puede encontrar el archivo jindo-distcp-tool-x.x.x.jar en el directorio /opt/apps/JINDOSDK/jindosdk-current/tools.

Parámetros

JindoDistCp se proporciona como un paquete JAR. Puede usar el comando hadoop jar junto con una serie de parámetros para realizar operaciones de migración.

Parámetro

Tipo de parámetro

Descripción

Valor predeterminado

Versión

OSS

OSS-HDFS

--src

Obligatorio

Especifica el directorio de origen. Se admiten los siguientes prefijos:

  • hdfs://

  • oss://

  • s3://

  • cos://

  • obs://

Ninguna

4.3.0 o posterior

Compatible

Compatible

--dest

Obligatorio

Especifica el directorio de destino. Se admiten los siguientes prefijos:

  • hdfs://

  • oss://

  • s3://

  • cos://

  • obs://

Ninguna

4.3.0 o posterior

Compatible

Compatible

--bandWidth

Opcional

Especifica el límite de ancho de banda para un solo nodo. Unidad: MB.

-1

4.3.0 o posterior

Compatible

Compatible

--codec

Opcional

Especifica el tipo de compresión. Los códecs compatibles incluyen gzip, gz, lzo, lzop y snappy.

keep (El tipo de compresión no se modifica).

4.3.0 o posterior

Compatible

Compatible

--policy

Opcional

Especifica la directiva de almacenamiento para el destino. Valores válidos: Standard, IA, Archive y ColdArchive.

Standard

4.3.0 o posterior

Compatible

No compatible

--filters

Opcional

Especifica el archivo que contiene las reglas de filtro.

Ninguna

4.3.0 o posterior

Compatible

Compatible

--srcPrefixesFile

Opcional

La configuración se aplica a los archivos que coinciden con la regla.

Ninguna

4.3.0 o posterior

Compatible

Compatible

--parallelism

Opcional

Especifica la concurrencia de la tarea DistCp. Corresponde al parámetro mapreduce.job.maps en una tarea de MapReduce.

10

4.3.0 o posterior

Compatible

Compatible

--jobBatch

Opcional

Especifica el número de archivos que procesará cada trabajo de DistCp.

10000

4.5.1 o posterior

Compatible

Compatible

--taskBatch

Opcional

Especifica el número de archivos que procesará cada tarea de DistCp.

1

4.3.0 o posterior

Compatible

Compatible

--tmp

Opcional

Especifica el directorio temporal.

/tmp

4.3.0 o posterior

Compatible

Compatible

--hadoopConf <key=value>

Opcional

Establece una configuración.

Ninguna

4.3.0 o posterior

Compatible

Compatible

--disableChecksum

Opcional

Especifica si se debe deshabilitar la verificación de suma de comprobación.

false

4.3.0 o posterior

Compatible

Compatible

--deleteOnSuccess

Opcional

Especifica si se deben eliminar los archivos de origen. Se utiliza para mover datos.

false

4.3.0 o posterior

Compatible

Compatible

--enableTransaction

Opcional

Especifica si se deben habilitar transacciones para garantizar la atomicidad a nivel de trabajo.

false

4.3.0 o posterior

Compatible

Compatible

--ignore

Opcional

Especifica si se deben ignorar las excepciones generadas durante la tarea de copia para evitar que esta se interrumpa.

false

4.3.0 o posterior

Compatible

Compatible

--enableCMS

Opcional

Especifica si se debe habilitar el monitoreo y las alertas.

false

4.5.1 o posterior

Compatible

Compatible

--diff

Opcional

Establece el modo DistCp en DIFF para consultar las diferencias entre los archivos del origen y el destino.

DistCpMode.COPY

4.3.0 o posterior

Compatible

Compatible

--update

Opcional

Establece el modo DistCp en UPDATE para habilitar la sincronización incremental. Omite archivos y directorios idénticos, y sincroniza del origen al destino únicamente los archivos y directorios nuevos o modificados.

DistCpMode.COPY

4.3.0 o posterior

Compatible

Compatible

--preserveMeta

Opcional

Especifica si se debe conservar la información de metadatos.

false

4.4.0 o posterior

No compatible

Compatible

--src y --dest (obligatorios)

Versión

OSS

OSS-HDFS

4.3.0 o posterior

Compatible

Compatible

  • --src: Especifica la ruta de los archivos de origen.

  • --dest: Especifica la ruta de los archivos de destino.

A continuación se muestra un ejemplo de comando:

hadoop jar jindo-distcp-tool-${version}.jar --src /data/hourly_table  --dest oss://example-oss-bucket/hourly_table

Puede especificar el directorio de destino mediante la ruta dest. Por ejemplo, el comando anterior copia archivos de /data/hourly_table al directorio hourly_table en el bucket example-oss-bucket. Este comportamiento difiere del de Hadoop DistCp. De forma predeterminada, JindoDistCp copia todos los archivos del directorio de origen a la ruta de destino especificada, pero no incluye el directorio raíz del origen. Puede especificar un directorio raíz en la ruta de destino. Si el directorio no existe, se crea automáticamente.

Para copiar un solo archivo, debe especificar un directorio como destino.

hadoop jar jindo-distcp-tool-${version}.jar --src /test.txt --dest oss://example-oss-bucket/tmp

Uso de --bandWidth

Versión

OSS

OSS-HDFS

4.3.0 o posterior

Compatible

Compatible

--bandWidth: Especifica el ancho de banda que puede utilizar un solo nodo para la tarea de DistCp, en MB. Este parámetro evita que un solo nodo consuma demasiado ancho de banda.

A continuación se muestra un ejemplo de comando:

jindo-distcp-tool-${version}.jar --src /data/hourly_table --dest oss://example-oss-bucket/hourly_table --bandWidth 6

Uso de --codec

Versión

OSS

OSS-HDFS

4.3.0 o posterior

Compatible

Compatible

Los archivos de origen suelen almacenarse en OSS u OSS-HDFS como texto sin comprimir, lo cual no es ideal para los costos de almacenamiento ni para el análisis de datos. Puede usar la opción --codec para almacenar datos de manera eficiente mediante la compresión de archivos en línea.

--codec especifica el códec de compresión de archivos. Admite los codificadores gzip, gz, lzo, lzop y snappy, así como las palabras clave none y keep (predeterminado). Las palabras clave se describen a continuación:

  • none: Guarda los archivos sin comprimir. Si un archivo de origen ya está comprimido, JindoDistCp lo descomprime.

  • keep (predeterminado): Copia los archivos tal como están, sin modificar su estado de compresión.

A continuación se muestra un ejemplo de comando:

jindo-distcp-tool-${version}.jar --src /data/hourly_table --dest oss://example-oss-bucket/hourly_table --codec gz

Después de ejecutar el comando, los archivos en la carpeta de destino se comprimen con el códec gz.

[root@emr-header-1 opt]# hdfs dfs -ls oss://example-oss-bucket/hourly_table/2017-02-01/03
Found 6 items
-rw-rw-rw-   1        938 2020-04-17 20:58 oss://example-oss-bucket/hourly_table/2017-02-01/03/000151.sst.gz
-rw-rw-rw-   1       1956 2020-04-17 20:58 oss://example-oss-bucket/hourly_table/2017-02-01/03/1.log.gz
-rw-rw-rw-   1       1956 2020-04-17 20:58 oss://example-oss-bucket/hourly_table/2017-02-01/03/2.log.gz
-rw-rw-rw-   1       1956 2020-04-17 20:58 oss://example-oss-bucket/hourly_table/2017-02-01/03/OPTIONS-000109.gz
-rw-rw-rw-   1        506 2020-04-17 20:58 oss://example-oss-bucket/hourly_table/2017-02-01/03/emp01.txt.gz
-rw-rw-rw-   1        506 2020-04-17 20:58 oss://example-oss-bucket/hourly_table/2017-02-01/03/emp06.txt.gz
Nota

Para utilizar el códec lzo en un clúster de Hadoop de código abierto, debe instalar la biblioteca nativa gplcompression y el paquete hadoop-lzo. Si no cuenta con el entorno necesario, deberá emplear otro método de compresión.

Uso de --filters

Versión

OSS

OSS-HDFS

4.3.0 o posterior

Compatible

Compatible

--filters: Especifica un archivo que contiene reglas de filtro.

A continuación se muestra un ejemplo de comando:

 jindo-distcp-tool-${version}.jar --src /data/hourly_table --dest oss://example-oss-bucket/hourly_table --filters filter.txt

Por ejemplo, si el archivo filter.txt contiene .*test.*, los archivos cuyas rutas contengan la cadena "test" no se copiarán a OSS.

Uso de --srcPrefixesFile

Versión

OSS

OSS-HDFS

4.3.0 o posterior

Compatible

Compatible

--srcPrefixesFile: Especifica un archivo que contiene reglas de inclusión.

A continuación se muestra un ejemplo de comando:

 jindo-distcp-tool-${version}.jar --src /data/hourly_table --dest oss://example-oss-bucket/hourly_table --srcPrefixesFile prefixes.txt

Por ejemplo, si el archivo prefixes.txt contiene .*test.*, solo los archivos cuyas rutas contengan la cadena "test" se copiarán a OSS.

Uso de --parallelism

Versión

OSS

OSS-HDFS

4.3.0 o posterior

Compatible

Compatible

--parallelism: Especifica el parámetro mapreduce.job.maps para la tarea de MapReduce. El valor predeterminado de este parámetro en un entorno EMR es 10. Puede personalizar el valor de este parámetro según los recursos de su clúster para controlar la concurrencia de la tarea de DistCp.

A continuación se muestra un ejemplo de comando:

 jindo-distcp-tool-${version}.jar --src /opt/tmp --dest oss://example-oss-bucket/tmp --parallelism 20

Uso de --taskBatch

Versión

OSS

OSS-HDFS

4.3.0 o posterior

Compatible

Compatible

--taskBatch: Especifica el número de archivos que procesará cada tarea de DistCp. El valor predeterminado es 1.

A continuación se muestra un ejemplo de comando:

 jindo-distcp-tool-${version}.jar --src /data/hourly_table --dest oss://example-oss-bucket/hourly_table --taskBatch 1

Uso de --tmp

Versión

OSS

OSS-HDFS

4.3.0 o posterior

Compatible

Compatible

--tmp: Especifica un directorio temporal en HDFS para almacenar datos temporales. El valor predeterminado es /tmp, que corresponde a hdfs:///tmp/.

A continuación se muestra un ejemplo de comando:

 jindo-distcp-tool-${version}.jar --src /data/hourly_table --dest oss://example-oss-bucket/hourly_table  --tmp /tmp

Configurar una AccessKey para acceder a OSS u OSS-HDFS

Versión

OSS

OSS-HDFS

4.3.0 o posterior

Compatible

Compatible

--hadoopConf: Si no se encuentra en un entorno EMR o si el servicio de acceso sin contraseña presenta problemas, puede usar esta opción para especificar una AccessKey y acceder a OSS u OSS-HDFS.

A continuación se muestra un ejemplo de comando:

 jindo-distcp-tool-${version}.jar --src /data/hourly_table --dest oss://example-oss-bucket/hourly_table --hadoopConf fs.oss.accessKeyId=yourkey --hadoopConf fs.oss.accessKeySecret=yoursecret

Para evitar ingresar la AccessKey cada vez, puede preconfigurar el ID de AccessKey y el secreto de AccessKey para OSS u OSS-HDFS en el archivo core-site.xml de Hadoop. En la consola de EMR, agregue la siguiente configuración en la página core-site.xml del servicio Hadoop-Common.

<configuration>
    <property>
        <name>fs.oss.accessKeyId</name>
        <value>xxx</value>
    </property>

    <property>
        <name>fs.oss.accessKeySecret</name>
        <value>xxx</value>
    </property>
</configuration>

Uso de --disableChecksum

Versión

OSS

OSS-HDFS

4.3.0 o posterior

Compatible

Compatible

--disableChecksum: Deshabilita la verificación de la suma de comprobación de archivos.

A continuación se muestra un ejemplo de comando:

 jindo-distcp-tool-${version}.jar --src /data/hourly_table --dest oss://example-oss-bucket/hourly_table --disableChecksum

Uso de --deleteOnSuccess

Versión

OSS

OSS-HDFS

4.3.0 o posterior

Compatible

Compatible

--deleteOnSuccess: Mueve datos en lugar de copiarlos. Esta opción es similar a una operación mv. Primero copia los archivos y luego los elimina del origen.

A continuación se muestra un ejemplo de comando:

 jindo-distcp-tool-${version}.jar --src /data/hourly_table --dest oss://example-oss-bucket/hourly_table --deleteOnSuccess

Uso de --enableTransaction

Versión

OSS

OSS-HDFS

4.3.0 o posterior

Compatible

Compatible

--enableTransaction: De forma predeterminada, JindoDistCp garantiza la integridad a nivel de tarea. Puede usar este parámetro para garantizar la integridad a nivel de trabajo y habilitar el soporte transaccional entre trabajos.

A continuación se muestra un ejemplo de comando:

 jindo-distcp-tool-${version}.jar --src /data/hourly_table --dest oss://example-oss-bucket/hourly_table --enableTransaction

Uso de --ignore

Versión

OSS

OSS-HDFS

4.3.0 o posterior

Compatible

Compatible

--ignore: Ignora las excepciones que ocurren durante la migración de datos. Los errores no interrumpen la tarea; en su lugar, se reportan como valores de JindoCounter. Si CMS está habilitado, también se envía una notificación.

A continuación se muestra un ejemplo de comando:

 jindo-distcp-tool-${version}.jar --src /data/hourly_table --dest oss://example-oss-bucket/hourly_table --ignore

Uso de --diff

Versión

OSS

OSS-HDFS

4.3.0 o posterior

Compatible

Compatible

--diff: Compara los archivos del origen y el destino. Si un archivo de origen no se ha sincronizado con el destino, se genera un archivo con las diferencias en el directorio actual. Si su tarea de JindoDistCp implica compresión o descompresión, --diff no podrá mostrar las diferencias correctas entre archivos porque el tamaño del archivo cambia durante el proceso.

A continuación se muestra un ejemplo de comando:

 jindo-distcp-tool-${version}.jar --src /data/hourly_table --dest oss://example-oss-bucket/hourly_table --diff

Si se encuentran diferencias, se genera un archivo con dichas diferencias en el directorio actual y se muestra el siguiente mensaje:

JindoCounter
DIFF_FILES=1

Si su --dest es una ruta de HDFS, se admiten los formatos /path, hdfs://hostname:ip/path y hdfs://headerIp:ip/path. No se admiten los formatos hdfs:///path, hdfs:/path ni otros formatos personalizados.

Para consultar diferencias en los metadatos de los archivos, ejecute el comando --diff --preserveMeta:

 jindo-distcp-tool-${version}.jar --src /data/hourly_table --dest oss://example-oss-bucket/hourly_table --diff --preserveMeta

Uso de --update

Versión

OSS

OSS-HDFS

4.3.0 o posterior

Compatible

Compatible

--update: Habilita la sincronización incremental. Esta opción omite archivos y directorios idénticos, y sincroniza del origen al destino únicamente los archivos y directorios nuevos o modificados.

Si una tarea de JindoDistCp falla, puede usar este parámetro para reanudarla desde el punto de interrupción y copiar solo los archivos restantes. También puede utilizar este parámetro para copiar archivos nuevos que se hayan agregado al origen después de completar la tarea anterior de JindoDistCp.

A continuación se muestra un ejemplo de comando:

 jindo-distcp-tool-${version}.jar --src /data/hourly_table --dest oss://example-oss-bucket/hourly_table --update

Escritura de datos en OSS con clases de almacenamiento Cold Archive, Archive o IA

Versión

OSS

OSS-HDFS

4.3.0 o posterior

Compatible

No compatible

--policy: Especifica la clase de almacenamiento para los datos que se escriben en OSS. Puede establecer este parámetro en Cold Archive, Archive o IA. Si no especifica este parámetro, los datos se escriben en la clase de almacenamiento Standard de forma predeterminada.

  • Escritura de datos en la clase de almacenamiento Cold Archive (coldArchive) en OSS

    Esta función solo está disponible en regiones específicas. Para obtener más información, consulte OSS storage classes. A continuación se muestra un ejemplo de comando:

     jindo-distcp-tool-${version}.jar --src /data/hourly_table --dest oss://example-bucket/hourly_table --policy coldArchive --parallelism 20
  • Escritura de datos en la clase de almacenamiento Archive (archive) en OSS

     jindo-distcp-tool-${version}.jar --src /data/hourly_table --dest oss://example-bucket/hourly_table --policy archive --parallelism 20
  • Escritura de datos en la clase de almacenamiento IA (ia) en OSS

     jindo-distcp-tool-${version}.jar --src /data/hourly_table --dest oss://example-bucket/hourly_table --policy ia --parallelism 20

Uso de --preserveMeta

Versión

OSS

OSS-HDFS

4.4.0 o posterior

No compatible

Compatible

--preserveMeta: Especifica que los metadatos se migran junto con los datos. Los metadatos incluyen Owner, Group, Permission, Atime, Mtime, Replication, BlockSize, XAttrs y ACL.

 jindo-distcp-tool-${version}.jar --src /data/hourly_table --dest oss://example-oss-bucket/hourly_table --preserveMeta

Uso de --jobBatch

Versión

OSS

OSS-HDFS

4.5.1 o posterior

Compatible

Compatible

--jobBatch: Cuando su tarea de DistCp escribe datos en OSS, puede usar --jobBatch para especificar el número de archivos que procesará cada trabajo de DistCp. El valor predeterminado es 10,000.

 jindo-distcp-tool-${version}.jar --src /data/hourly_table --dest oss://example-oss-bucket/hourly_table --jobBatch 50000

Uso de --enableCMS

Versión

OSS

OSS-HDFS

4.5.1 o posterior

Compatible

Compatible

--enableCMS: Habilita la función de alertas de CMS .

Contadores de JindoDistCp

Los contadores de JindoDistCp resumen los resultados de una tarea de JindoDistCp. La siguiente tabla describe los contadores.

Parámetro

Descripción

COPY_FAILED

Número de archivos cuya copia falló.

CHECKSUM_DIFF

Número de archivos que no superaron la verificación de suma de comprobación. Se incluye en COPY_FAILED.

FILES_EXPECTED

Número de archivos que se espera copiar.

BYTES_EXPECTED

Número de bytes que se espera copiar.

FILES_COPIED

Número de archivos copiados correctamente.

BYTES_COPIED

Número de bytes copiados correctamente.

FILES_SKIPPED

Número de archivos omitidos durante una actualización incremental.

BYTES_SKIPPED

Número de bytes omitidos durante una actualización incremental.

DIFF_FILES

Número de archivos diferentes entre las rutas de origen y destino.

SAME_FILES

Número de archivos idénticos entre las rutas de origen y destino.

DST_MISS

Número de archivos inexistentes en la ruta de destino. Se incluye en DIFF_FILES.

LENGTH_DIFF

Número de archivos con tamaños distintos entre el origen y el destino. Se incluye en DIFF_FILES.

CHECKSUM_DIFF

Número de archivos que no superaron la verificación de suma de comprobación. Se incluye en DIFF_FILES.

DIFF_FAILED

Número de archivos cuya operación de comparación presentó anomalías.