Tous les produits
Search
Centre de documentation

E-MapReduce:Guide d'utilisation de JindoDistCp

Dernière mise à jour :Aug 20, 2026

Cette rubrique décrit comment utiliser JindoDistCp.

Qu'est-ce que JindoDistCp ?

JindoDistCp est un outil de copie de fichiers distribué développé par l'équipe Alibaba Cloud Data Lake Storage pour les transferts de données à grande échelle au sein des clusters et entre ceux-ci. Il s'appuie sur MapReduce pour distribuer les fichiers, gérer les erreurs et assurer la récupération après incident. Il prend en entrée une liste de fichiers et de répertoires pour les tâches MapReduce, chaque tâche copiant une partie de la liste source. Il prend entièrement en charge les scénarios de copie de données entre le système de fichiers distribué Hadoop (HDFS), OSS-HDFS, OSS et S3. Il propose divers paramètres et stratégies de copie personnalisés. Il est optimisé pour la copie de données depuis HDFS vers OSS-HDFS. Grâce à un CopyCommitter personnalisé, il effectue des copies sans renommage (No-Rename) et garantit la cohérence des données à la fin du processus. Ses fonctionnalités sont parfaitement alignées sur celles de S3 DistCp et HDFS DistCp. Il offre des améliorations significatives en termes de performances par rapport à HDFS DistCp. JindoDistCp est conçu pour être un outil de copie de données efficace, stable et sécurisé.

Prérequis environnementaux

  • JDK 1.8.0 ou version ultérieure.

  • Hadoop 2.3 ou version ultérieure. Vous devez télécharger la dernière version du fichier jindo-distcp-tool-x.x.x.jar. Ce fichier JAR est inclus dans le package jindosdk-${version}.tar.gz. Après avoir décompressé le package, vous trouverez le fichier JAR dans le répertoire tools/. Pour plus d'informations, consultez Téléchargements JindoData.

    Remarque

    JindoDistCp est déployé sur les clusters exécutant EMR V5.6.0 ou version ultérieure, ainsi que EMR V3.40.0 ou version ultérieure. Vous pouvez trouver le fichier jindo-distcp-tool-x.x.x.jar dans le répertoire /opt/apps/JINDOSDK/jindosdk-current/tools.

Paramètres

JindoDistCp est fourni sous forme de package JAR. Vous pouvez utiliser la commande hadoop jar avec une série de paramètres pour effectuer des opérations de migration.

Paramètre

Type de paramètre

Description

Valeur par défaut

Version

OSS

OSS-HDFS

--src

Obligatoire

Spécifie le répertoire source. Les préfixes suivants sont pris en charge :

  • hdfs://

  • oss://

  • s3://

  • cos://

  • obs://

Aucune

4.3.0 ou version ultérieure

Prise en charge

Pris en charge

--dest

Obligatoire

Spécifie le répertoire de destination. Les préfixes suivants sont pris en charge :

  • hdfs://

  • oss://

  • s3://

  • cos://

  • obs://

Aucune

4.3.0 ou version ultérieure

Pris en charge

Prise en charge

--bandWidth

Facultatif

Spécifie la limite de bande passante pour un seul nœud. Unité : Mo.

-1

4.3.0 ou version ultérieure

Prise en charge

Prise en charge

--codec

Facultatif

Spécifie le type de compression. Les codecs pris en charge incluent gzip, gz, lzo, lzop et snappy.

keep (Le type de compression reste inchangé.)

4.3.0 ou version ultérieure

Prise en charge

Pris en charge

--policy

Facultatif

Spécifie la politique de stockage pour la destination. Valeurs valides : Standard, IA, Archive et ColdArchive.

Standard

4.3.0 ou version ultérieure

Prise en charge

Non pris en charge

--filters

Facultatif

Spécifie le fichier contenant les règles de filtrage.

Aucune

4.3.0 ou version ultérieure

Prise en charge

Prise en charge

--srcPrefixesFile

Facultatif

Les paramètres s'appliquent aux fichiers correspondant à la règle.

Aucune

4.3.0 ou version ultérieure

Pris en charge

Prise en charge

--parallelism

Facultatif

Spécifie la concurrence de la tâche DistCp. Cela correspond au paramètre mapreduce.job.maps dans une tâche MapReduce.

10

4.3.0 ou version ultérieure

Prise en charge

Prise en charge

--jobBatch

Facultatif

Spécifie le nombre de fichiers à traiter par chaque tâche DistCp.

10000

4.5.1 ou version ultérieure

Prise en charge

Pris en charge

--taskBatch

Facultatif

Spécifie le nombre de fichiers à traiter par chaque tâche DistCp.

1

4.3.0 ou version ultérieure

Pris en charge

Prise en charge

--tmp

Facultatif

Spécifie le répertoire temporaire.

/tmp

4.3.0 ou version ultérieure

Pris en charge

Prise en charge

--hadoopConf <key=value>

Facultatif

Définit une configuration.

Aucune

4.3.0 ou version ultérieure

Prise en charge

Prise en charge

--disableChecksum

Facultatif

Indique s'il faut désactiver la vérification de la somme de contrôle.

false

4.3.0 ou version ultérieure

Pris en charge

Prise en charge

--deleteOnSuccess

Facultatif

Indique s'il faut supprimer les fichiers source. Cette option sert à déplacer des données.

false

4.3.0 ou version ultérieure

Pris en charge

Pris en charge

--enableTransaction

Facultatif

Indique s'il faut activer les transactions pour garantir l'atomicité au niveau de la tâche.

false

4.3.0 ou version ultérieure

Pris en charge

Pris en charge

--ignore

Facultatif

Indique s'il faut ignorer les exceptions levées lors de la tâche de copie pour éviter l'interruption de celle-ci.

false

4.3.0 ou version ultérieure

Prise en charge

Prise en charge

--enableCMS

Facultatif

Indique s'il faut activer la surveillance et les alertes.

false

4.5.1 ou version ultérieure

Prise en charge

Prise en charge

--diff

Facultatif

Définit le mode DistCp sur DIFF pour afficher les différences entre les fichiers source et de destination.

DistCpMode.COPY

4.3.0 ou version ultérieure

Pris en charge

Prise en charge

--update

Facultatif

Définit le mode DistCp sur UPDATE pour activer la synchronisation incrémentielle. Cette option ignore les fichiers et répertoires identiques et ne synchronise que les nouveaux fichiers et répertoires ou ceux ayant été modifiés, de la source vers la destination.

DistCpMode.COPY

4.3.0 ou version ultérieure

Pris en charge

Prise en charge

--preserveMeta

Facultatif

Indique s'il faut conserver les informations de métadonnées.

false

4.4.0 ou version ultérieure

Non pris en charge

Pris en charge

--src et --dest (obligatoires)

Version

OSS

OSS-HDFS

4.3.0 ou version ultérieure

Pris en charge

Pris en charge

  • --src : spécifie le chemin des fichiers source.

  • --dest : spécifie le chemin des fichiers de destination.

La commande suivante fournit un exemple :

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

Vous pouvez spécifier le répertoire de destination à l'aide du chemin dest. Par exemple, la commande précédente copie les fichiers de /data/hourly_table vers le répertoire hourly_table du bucket example-oss-bucket. Ce comportement diffère de celui de Hadoop DistCp. Par défaut, JindoDistCp copie tous les fichiers du répertoire source vers le chemin de destination spécifié, mais n'inclut pas le répertoire racine de la source. Vous pouvez spécifier un répertoire racine dans le chemin de destination. Si le répertoire n'existe pas, il est automatiquement créé.

Pour copier un seul fichier, vous devez spécifier un répertoire comme destination.

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

Utilisation de --bandWidth

Version

OSS

OSS-HDFS

4.3.0 ou version ultérieure

Pris en charge

Prise en charge

--bandWidth : spécifie la bande passante qu'un seul nœud peut utiliser pour la tâche DistCp, en Mo. Ce paramètre empêche un seul nœud de consommer trop de bande passante.

La commande suivante fournit un exemple :

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

Utilisation de --codec

Version

OSS

OSS-HDFS

4.3.0 ou version ultérieure

Prise en charge

Prise en charge

Les fichiers source sont souvent stockés dans OSS ou OSS-HDFS sous forme de texte non compressé, ce qui n'est pas idéal pour les coûts de stockage ou l'analyse des données. Vous pouvez utiliser l'option --codec pour stocker efficacement les données en compressant les fichiers en ligne.

--codec spécifie le codec de compression de fichier. Il prend en charge les encodeurs gzip, gz, lzo, lzop et snappy, ainsi que les mots-clés none et keep (par défaut). Les mots-clés sont décrits ci-dessous :

  • none : enregistre les fichiers sans compression. Si un fichier source est déjà compressé, JindoDistCp le décompresse.

  • keep (par défaut) : copie les fichiers tels quels sans modifier leur état de compression.

La commande suivante fournit un exemple :

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

Après l'exécution de la commande, les fichiers du dossier de destination sont compressés à l'aide du codec 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
Remarque

Pour utiliser le codec lzo dans un cluster Hadoop open source, vous devez installer la bibliothèque native gplcompression et le package hadoop-lzo. Si vous ne disposez pas de l'environnement requis, vous devez utiliser une autre méthode de compression.

Utilisation de --filters

Version

OSS

OSS-HDFS

4.3.0 ou version ultérieure

Pris en charge

Prise en charge

--filters : spécifie un fichier contenant les règles de filtrage.

La commande suivante fournit un exemple :

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

Par exemple, si le fichier filter.txt contient .*test.*, les fichiers dont les chemins contiennent la chaîne « test » ne sont pas copiés vers OSS.

Utilisation de --srcPrefixesFile

Version

OSS

OSS-HDFS

4.3.0 ou version ultérieure

Prise en charge

Prise en charge

--srcPrefixesFile : spécifie un fichier contenant les règles d'inclusion.

La commande suivante fournit un exemple :

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

Par exemple, si le fichier prefixes.txt contient .*test.*, seuls les fichiers dont les chemins contiennent la chaîne « test » sont copiés vers OSS.

Utilisation de --parallelism

Version

OSS

OSS-HDFS

4.3.0 ou version ultérieure

Prise en charge

Prise en charge

--parallelism : spécifie le paramètre mapreduce.job.maps pour la tâche MapReduce. La valeur par défaut de ce paramètre dans un environnement EMR est 10. Vous pouvez personnaliser la valeur de ce paramètre en fonction des ressources de votre cluster pour contrôler la concurrence de la tâche DistCp.

La commande suivante fournit un exemple :

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

Utilisation de --taskBatch

Version

OSS

OSS-HDFS

4.3.0 ou version ultérieure

Prise en charge

Pris en charge

--taskBatch : spécifie le nombre de fichiers à traiter par chaque tâche DistCp. La valeur par défaut est 1.

La commande suivante fournit un exemple :

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

Utilisation de --tmp

Version

OSS

OSS-HDFS

4.3.0 ou version ultérieure

Pris en charge

Pris en charge

--tmp : spécifie un répertoire temporaire dans HDFS pour stocker les données temporaires. La valeur par défaut est /tmp, qui correspond à hdfs:///tmp/.

La commande suivante fournit un exemple :

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

Configuration d'une AccessKey pour accéder à OSS ou OSS-HDFS

Version

OSS

OSS-HDFS

4.3.0 ou version ultérieure

Prise en charge

Prise en charge

--hadoopConf : si vous n'êtes pas dans un environnement EMR ou si le service d'accès sans mot de passe rencontre des problèmes, vous pouvez utiliser cette option pour spécifier une AccessKey afin d'accéder à OSS ou OSS-HDFS.

La commande suivante fournit un exemple :

 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

Pour éviter de saisir l'AccessKey à chaque fois, vous pouvez préconfigurer l'ID AccessKey et le secret AccessKey pour OSS ou OSS-HDFS dans le fichier core-site.xml de Hadoop. Dans la console EMR, ajoutez la configuration suivante sur la page core-site.xml du service Hadoop-Common.

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

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

Utilisation de --disableChecksum

Version

OSS

OSS-HDFS

4.3.0 ou version ultérieure

Prise en charge

Prise en charge

--disableChecksum : désactive la vérification de la somme de contrôle des fichiers.

La commande suivante fournit un exemple :

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

Utilisation de --deleteOnSuccess

Version

OSS

OSS-HDFS

4.3.0 ou version ultérieure

Pris en charge

Pris en charge

--deleteOnSuccess : déplace les données au lieu de les copier. Cette option est similaire à une opération mv. Elle copie d'abord les fichiers, puis les supprime de la source.

La commande suivante fournit un exemple :

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

Utilisation de --enableTransaction

Version

OSS

OSS-HDFS

4.3.0 ou version ultérieure

Pris en charge

Prise en charge

--enableTransaction : par défaut, JindoDistCp garantit l'intégrité au niveau de la tâche. Vous pouvez utiliser ce paramètre pour garantir l'intégrité au niveau du job et activer la prise en charge transactionnelle entre les jobs.

La commande suivante fournit un exemple :

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

Utilisation de --ignore

Version

OSS

OSS-HDFS

4.3.0 ou version ultérieure

Pris en charge

Prise en charge

--ignore : ignore les exceptions qui se produisent lors de la migration des données. Les erreurs n'interrompent pas la tâche. Elles sont plutôt signalées sous forme de valeurs JindoCounter. Si CMS est activé, une notification est également envoyée.

La commande suivante fournit un exemple :

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

Utilisation de --diff

Version

OSS

OSS-HDFS

4.3.0 ou version ultérieure

Prise en charge

Prise en charge

--diff : compare les fichiers source et de destination. Si un fichier source n'est pas synchronisé vers la destination, un fichier contenant les différences est généré dans le répertoire actuel. Si votre tâche JindoDistCp implique une compression ou une décompression, --diff ne peut pas afficher les différences de fichiers correctes car la taille du fichier change pendant le processus.

La commande suivante fournit un exemple :

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

Si des différences sont trouvées, un fichier contenant les différences est généré dans le répertoire actuel et le message suivant s'affiche :

JindoCounter
DIFF_FILES=1

Si votre --dest est un chemin HDFS, les formats /path, hdfs://hostname:ip/path et hdfs://headerIp:ip/path sont pris en charge. Les formats hdfs:///path, hdfs:/path ou autres formats personnalisés ne sont pas pris en charge.

Pour afficher les différences dans les métadonnées des fichiers, exécutez la commande --diff --preserveMeta :

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

Utilisation de --update

Version

OSS

OSS-HDFS

4.3.0 ou version ultérieure

Prise en charge

Prise en charge

--update : active la synchronisation incrémentielle. Cette option ignore les fichiers et répertoires identiques et ne synchronise que les nouveaux fichiers et répertoires ou ceux ayant été modifiés, de la source vers la destination.

Si une tâche JindoDistCp échoue, vous pouvez utiliser ce paramètre pour la reprendre à partir du point d'arrêt et copier uniquement les fichiers restants. Vous pouvez également utiliser ce paramètre pour copier les nouveaux fichiers ajoutés à la source après la fin de la tâche JindoDistCp précédente.

La commande suivante fournit un exemple :

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

Écriture de données dans OSS avec les classes de stockage Cold Archive, Archive ou IA

Version

OSS

OSS-HDFS

4.3.0 ou version ultérieure

Prise en charge

Non pris en charge

--policy : spécifie la classe de stockage pour les données écrites dans OSS. Vous pouvez définir ce paramètre sur Cold Archive, Archive ou IA. Si vous ne spécifiez pas ce paramètre, les données sont écrites par défaut dans la classe de stockage Standard.

  • Écrire des données dans la classe de stockage Cold Archive (coldArchive) dans OSS

    Cette fonctionnalité est disponible uniquement dans certaines régions. Pour plus d'informations, consultez Classes de stockage OSS. La commande suivante fournit un exemple :

     jindo-distcp-tool-${version}.jar --src /data/hourly_table --dest oss://example-bucket/hourly_table --policy coldArchive --parallelism 20
  • Écrire des données dans la classe de stockage Archive (archive) dans OSS

     jindo-distcp-tool-${version}.jar --src /data/hourly_table --dest oss://example-bucket/hourly_table --policy archive --parallelism 20
  • Écrire des données dans la classe de stockage IA (ia) dans OSS

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

Utilisation de --preserveMeta

Version

OSS

OSS-HDFS

4.4.0 ou version ultérieure

Non pris en charge

Pris en charge

--preserveMeta : spécifie que les métadonnées sont migrées avec les données. Les métadonnées incluent Owner, Group, Permission, Atime, Mtime, Replication, BlockSize, XAttrs et ACL.

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

Utilisation de --jobBatch

Version

OSS

OSS-HDFS

4.5.1 ou version ultérieure

Prise en charge

Prise en charge

--jobBatch : lorsque votre tâche DistCp écrit des données dans OSS, vous pouvez utiliser --jobBatch pour spécifier le nombre de fichiers à traiter par chaque job DistCp. La valeur par défaut est 10 000.

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

Utilisation de --enableCMS

Version

OSS

OSS-HDFS

4.5.1 ou version ultérieure

Prise en charge

Prise en charge

--enableCMS : active la fonctionnalité d'alerte CMS .

Compteurs JindoDistCp

Les compteurs JindoDistCp résument les résultats d'une tâche JindoDistCp. Le tableau suivant décrit les compteurs.

Paramètre

Description

COPY_FAILED

Nombre de fichiers dont la copie a échoué.

CHECKSUM_DIFF

Nombre de fichiers dont la vérification de la somme de contrôle a échoué. Inclus dans COPY_FAILED.

FILES_EXPECTED

Nombre de fichiers devant être copiés.

BYTES_EXPECTED

Nombre d'octets devant être copiés.

FILES_COPIED

Nombre de fichiers copiés avec succès.

BYTES_COPIED

Nombre d'octets copiés avec succès.

FILES_SKIPPED

Nombre de fichiers ignorés lors d'une mise à jour incrémentielle.

BYTES_SKIPPED

Nombre d'octets ignorés lors d'une mise à jour incrémentielle.

DIFF_FILES

Nombre de fichiers différents entre les chemins source et de destination.

SAME_FILES

Nombre de fichiers identiques entre les chemins source et de destination.

DST_MISS

Nombre de fichiers absents du chemin de destination. Inclus dans DIFF_FILES.

LENGTH_DIFF

Nombre de fichiers dont la taille diffère entre la source et la destination. Inclus dans DIFF_FILES.

CHECKSUM_DIFF

Nombre de fichiers dont la vérification de la somme de contrôle a échoué. Inclus dans DIFF_FILES.

DIFF_FAILED

Nombre de fichiers pour lesquels l'opération de comparaison a rencontré une anomalie.