Todos os produtos
Search
Central de documentação

E-MapReduce:Guia do usuário do JindoDistCp

Última atualização: Aug 20, 2026

Este tópico descreve como usar o JindoDistCp.

O que é o JindoDistCp

O JindoDistCp é uma ferramenta de cópia distribuída de arquivos desenvolvida pela equipe do Alibaba Cloud Data Lake Storage para transferências de dados em grande escala dentro e entre clusters. Ela usa MapReduce para distribuir arquivos, tratar erros e recuperar-se de falhas. A ferramenta recebe uma lista de arquivos e diretórios como entrada para tarefas MapReduce, em que cada tarefa copia uma parte da lista de origem. Há suporte completo a cenários de cópia de dados entre Hadoop Distributed File System (HDFS), OSS-HDFS, OSS e S3. Diversos parâmetros e estratégias personalizadas de cópia estão disponíveis. A ferramenta é otimizada para copiar dados do HDFS para o OSS-HDFS. Com um CopyCommitter personalizado, ela executa cópias sem renomeação (No-Rename) e garante a consistência dos dados após a conclusão. Seus recursos estão totalmente alinhados aos do S3 DistCp e do HDFS DistCp, com melhorias significativas de desempenho em relação ao HDFS DistCp. O JindoDistCp foi projetado para ser uma ferramenta de cópia de dados eficiente, estável e segura.

Requisitos de ambiente

  • JDK 1.8.0 ou posterior.

  • Hadoop 2.3 ou posterior. Baixe a versão mais recente do arquivo jindo-distcp-tool-x.x.x.jar. Esse arquivo JAR está incluído no pacote jindosdk-${version}.tar.gz. Após descompactar o pacote, localize o arquivo JAR no diretório tools/. Para mais informações, consulte JindoData downloads.

    Nota

    O JindoDistCp vem implantado em clusters que executam EMR V5.6.0 ou posterior e EMR V3.40.0 ou posterior. Encontre o arquivo jindo-distcp-tool-x.x.x.jar no diretório /opt/apps/JINDOSDK/jindosdk-current/tools.

Parâmetros

O JindoDistCp é fornecido como um pacote JAR. Use o comando hadoop jar com uma série de parâmetros para executar operações de migração.

Parâmetro

Tipo de parâmetro

Descrição

Valor padrão

Versão

OSS

OSS-HDFS

--src

Obrigatório

Especifique o diretório de origem. Os seguintes prefixos têm suporte:

  • hdfs://

  • oss://

  • s3://

  • cos://

  • obs://

Nenhum

4.3.0 ou posterior

Suporte

Compatível

--dest

Obrigatório

Defina o diretório de destino. Há suporte aos seguintes prefixos:

  • hdfs://

  • oss://

  • s3://

  • cos://

  • obs://

Nenhum

4.3.0 ou posterior

Compatível

Suporte

--bandWidth

Opcional

Defina o limite de largura de banda para um único nó. Unidade: MB.

-1

4.3.0 ou posterior

Suporte

Suporte

--codec

Opcional

Defina o tipo de compressão. Os codecs compatíveis incluem gzip, gz, lzo, lzop e snappy.

keep (O tipo de compressão não é alterado.)

4.3.0 ou posterior

Suporte

Compatível

--policy

Opcional

Defina a política de armazenamento do destino. Valores válidos: Standard, IA, Archive e ColdArchive.

Standard

4.3.0 ou posterior

Suporte

Não compatível

--filters

Opcional

Especifique o arquivo que contém regras de filtro.

Nenhum

4.3.0 ou posterior

Suporte

Suporte

--srcPrefixesFile

Opcional

As configurações aplicam-se aos arquivos correspondentes à regra.

Nenhum

4.3.0 ou posterior

Compatível

Suporte

--parallelism

Opcional

Defina a simultaneidade da tarefa DistCp. Corresponde ao parâmetro mapreduce.job.maps em uma tarefa MapReduce.

10

4.3.0 ou posterior

Suporte

Suporte

--jobBatch

Opcional

Defina a quantidade de arquivos processados por cada job DistCp.

10000

4.5.1 ou posterior

Suporte

Compatível

--taskBatch

Opcional

Defina o número de arquivos a serem processados por cada tarefa DistCp.

1

4.3.0 ou posterior

Compatível

Suporte

--tmp

Opcional

Defina o diretório temporário.

/tmp

4.3.0 ou posterior

Compatível

Suporte

--hadoopConf <key=value>

Opcional

Defina uma configuração.

Nenhum

4.3.0 ou posterior

Suporte

Suporte

--disableChecksum

Opcional

Defina se a verificação de checksum deve ser desativada.

false

4.3.0 ou posterior

Compatível

Suporte

--deleteOnSuccess

Opcional

Defina se os arquivos de origem devem ser excluídos. Usado para mover dados.

false

4.3.0 ou posterior

Compatível

Compatível

--enableTransaction

Opcional

Ative transações para garantir atomicidade no nível do job.

false

4.3.0 ou posterior

Compatível

Compatível

--ignore

Opcional

Ignora exceções geradas durante a tarefa de cópia para evitar interrupções.

false

4.3.0 ou posterior

Suporte

Suporte

--enableCMS

Opcional

Ative monitoramento e alertas.

false

4.5.1 ou posterior

Suporte

Suporte

--diff

Opcional

Altera o modo DistCp para DIFF para visualizar diferenças entre arquivos de origem e destino.

DistCpMode.COPY

4.3.0 ou posterior

Compatível

Suporte

--update

Opcional

Altera o modo DistCp para UPDATE para ativar sincronização incremental. Arquivos e diretórios idênticos são ignorados; apenas itens novos ou alterados na origem são sincronizados com o destino.

DistCpMode.COPY

4.3.0 ou posterior

Compatível

Suporte

--preserveMeta

Opcional

Preserva informações de metadados.

false

4.4.0 ou posterior

Não compatível

Compatível

--src e --dest (obrigatórios)

Versão

OSS

OSS-HDFS

4.3.0 ou posterior

Compatível

Compatível

  • --src: Especifique o caminho dos arquivos de origem.

  • --dest: Defina o caminho dos arquivos de destino.

Exemplo de comando:

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

Use o caminho dest para indicar o diretório de destino. Por exemplo, o comando anterior copia arquivos de /data/hourly_table para o diretório hourly_table no bucket example-oss-bucket. Esse comportamento difere do Hadoop DistCp. Por padrão, o JindoDistCp copia todos os arquivos do diretório de origem para o caminho de destino especificado, sem incluir o diretório raiz da origem. É possível definir um diretório raiz no caminho de destino; caso não exista, ele será criado automaticamente.

Para copiar um único arquivo, especifique um diretório como destino.

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

Uso do --bandWidth

Versão

OSS

OSS-HDFS

4.3.0 ou posterior

Compatível

Suporte

--bandWidth: Limita a largura de banda que um único nó pode consumir na tarefa DistCp, em MB. Esse parâmetro evita que um nó use largura de banda excessiva.

Exemplo de comando:

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

Uso do --codec

Versão

OSS

OSS-HDFS

4.3.0 ou posterior

Suporte

Suporte

Frequentemente, arquivos de origem são armazenados no OSS ou OSS-HDFS como texto não compactado, o que não é ideal para custos de armazenamento ou análise de dados. Use a opção --codec para armazenar dados de forma eficiente, comprimindo arquivos online.

O parâmetro --codec define o codec de compressão de arquivos. Há suporte aos codificadores gzip, gz, lzo, lzop e snappy, além das palavras-chave none e keep (padrão). As palavras-chave funcionam da seguinte forma:

  • none: Salva os arquivos sem compressão. Se um arquivo de origem já estiver compactado, o JindoDistCp o descompacta.

  • keep (padrão): Copia os arquivos exatamente como estão, sem alterar seu estado de compressão.

Exemplo de comando:

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

Após a execução do comando, os arquivos na pasta de destino estarão compactados com o 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
Nota

Para usar o codec lzo em um cluster Hadoop open source, instale a biblioteca nativa gplcompression e o pacote hadoop-lzo. Caso não possua o ambiente necessário, adote outro método de compressão.

Uso do --filters

Versão

OSS

OSS-HDFS

4.3.0 ou posterior

Compatível

Suporte

--filters: Especifique um arquivo contendo regras de filtro.

Exemplo de comando:

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

Por exemplo, se o arquivo filter.txt contiver .*test.*, arquivos cujos caminhos incluam a string "test" não serão copiados para o OSS.

Uso do --srcPrefixesFile

Versão

OSS

OSS-HDFS

4.3.0 ou posterior

Suporte

Suporte

--srcPrefixesFile: Especifique um arquivo com regras de inclusão.

Exemplo de comando:

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

Se o arquivo prefixes.txt contiver .*test.*, por exemplo, apenas arquivos cujos caminhos contenham a string "test" serão copiados para o OSS.

Uso do --parallelism

Versão

OSS

OSS-HDFS

4.3.0 ou posterior

Suporte

Suporte

--parallelism: Defina o parâmetro mapreduce.job.maps para a tarefa MapReduce. Em ambientes EMR, o valor padrão é 10. Personalize esse valor conforme os recursos do seu cluster para controlar a simultaneidade da tarefa DistCp.

Exemplo de comando:

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

Uso do --taskBatch

Versão

OSS

OSS-HDFS

4.3.0 ou posterior

Suporte

Compatível

--taskBatch: Defina quantos arquivos cada tarefa DistCp deve processar. O valor padrão é 1.

Exemplo de comando:

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

Uso do --tmp

Versão

OSS

OSS-HDFS

4.3.0 ou posterior

Compatível

Compatível

--tmp: Defina um diretório temporário no HDFS para armazenar dados provisórios. O valor padrão é /tmp, correspondente a hdfs:///tmp/.

Exemplo de comando:

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

Configure um AccessKey para acessar o OSS ou OSS-HDFS

Versão

OSS

OSS-HDFS

4.3.0 ou posterior

Suporte

Suporte

--hadoopConf: Fora de um ambiente EMR ou caso o service de acesso sem senha apresente problemas, use esta opção para fornecer um AccessKey de acesso ao OSS ou OSS-HDFS.

Exemplo 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 inserir o AccessKey repetidamente, pré-configurar o AccessKey ID e o AccessKey Secret do OSS ou OSS-HDFS no arquivo core-site.xml do Hadoop. No console EMR, adicione a seguinte configuração na página core-site.xml do 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>

Uso do --disableChecksum

Versão

OSS

OSS-HDFS

4.3.0 ou posterior

Suporte

Suporte

--disableChecksum: Desativa a verificação de checksum dos arquivos.

Exemplo de comando:

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

Uso do --deleteOnSuccess

Versão

OSS

OSS-HDFS

4.3.0 ou posterior

Compatível

Compatível

--deleteOnSuccess: Move dados em vez de copiá-los. Funciona de maneira semelhante a uma operação mv: primeiro copia os arquivos e depois os exclui da origem.

Exemplo de comando:

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

Uso do --enableTransaction

Versão

OSS

OSS-HDFS

4.3.0 ou posterior

Compatível

Suporte

--enableTransaction: Por padrão, o JindoDistCp garante integridade no nível da tarefa. Use este parâmetro para assegurar integridade no nível do job e ativar suporte transacional entre jobs.

Exemplo de comando:

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

Uso do --ignore

Versão

OSS

OSS-HDFS

4.3.0 ou posterior

Compatível

Suporte

--ignore: Ignora exceções ocorridas durante a migração de dados. Erros não interrompem a tarefa; em vez disso, são reportados como valores JindoCounter. Se o CMS estiver ativado, uma notificação também é enviada.

Exemplo de comando:

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

Uso do --diff

Versão

OSS

OSS-HDFS

4.3.0 ou posterior

Suporte

Suporte

--diff: Compara arquivos entre origem e destino. Caso um arquivo de origem não esteja sincronizado com o destino, um arquivo contendo as diferenças é gerado no diretório atual. Se sua tarefa JindoDistCp envolver compressão ou descompressão, --diff não conseguirá mostrar as diferenças corretas, pois o tamanho do arquivo muda durante o processo.

Exemplo de comando:

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

Quando diferenças são encontradas, um arquivo contendo essas discrepâncias é gerado no diretório atual e a seguinte mensagem é exibida:

JindoCounter
DIFF_FILES=1

Se o seu --dest for um caminho HDFS, há suporte aos formatos /path, hdfs://hostname:ip/path e hdfs://headerIp:ip/path. Os formatos hdfs:///path, hdfs:/path ou outros personalizados não são suportados.

Para verificar diferenças nos metadados dos arquivos, execute o comando --diff --preserveMeta:

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

Uso do --update

Versão

OSS

OSS-HDFS

4.3.0 ou posterior

Suporte

Suporte

--update: Ative a sincronização incremental. Essa opção ignora arquivos e diretórios idênticos, sincronizando apenas itens novos ou modificados da origem para o destino.

Se uma tarefa JindoDistCp falhar, use este parâmetro para retomá-la do ponto de interrupção, copiando apenas os arquivos restantes. Também é possível usar esse parâmetro para copiar novos arquivos adicionados à origem após a conclusão de uma tarefa JindoDistCp anterior.

Exemplo de comando:

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

Gravar dados no OSS nas classes de armazenamento Cold Archive, Archive ou IA

Versão

OSS

OSS-HDFS

4.3.0 ou posterior

Suporte

Não compatível

--policy: Defina a classe de armazenamento para dados gravados no OSS. Configure este parâmetro como Cold Archive, Archive ou IA. Sem essa especificação, os dados são gravados na classe Standard por padrão.

  • Gravar dados na classe Cold Archive (coldArchive) no OSS

    Esse recurso está disponível apenas em regiões específicas. Para mais detalhes, consulte OSS storage classes. Exemplo de comando:

     jindo-distcp-tool-${version}.jar --src /data/hourly_table --dest oss://example-bucket/hourly_table --policy coldArchive --parallelism 20
  • Gravar dados na classe Archive (archive) no OSS

     jindo-distcp-tool-${version}.jar --src /data/hourly_table --dest oss://example-bucket/hourly_table --policy archive --parallelism 20
  • Gravar dados na classe IA (ia) no OSS

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

Uso do --preserveMeta

Versão

OSS

OSS-HDFS

4.4.0 ou posterior

Não compatível

Compatível

--preserveMeta: Garante que os metadados sejam migrados junto com os dados. Isso inclui Owner, Group, Permission, Atime, Mtime, Replication, BlockSize, XAttrs e ACL.

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

Uso do --jobBatch

Versão

OSS

OSS-HDFS

4.5.1 ou posterior

Suporte

Suporte

--jobBatch: Ao gravar dados no OSS com sua tarefa DistCp, use --jobBatch para definir a quantidade de arquivos processados por cada job DistCp. O valor padrão é 10.000.

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

Uso do --enableCMS

Versão

OSS

OSS-HDFS

4.5.1 ou posterior

Suporte

Suporte

--enableCMS: Ative o recurso de alertas do CMS .

Contadores do JindoDistCp

Os contadores do JindoDistCp resumem os resultados de uma tarefa. A tabela a seguir descreve cada contador.

Parâmetro

Descrição

COPY_FAILED

Quantidade de arquivos cuja cópia falhou.

CHECKSUM_DIFF

Número de arquivos reprovados na verificação de checksum. Incluído em COPY_FAILED.

FILES_EXPECTED

Total de arquivos esperados para cópia.

BYTES_EXPECTED

Volume de bytes previstos para cópia.

FILES_COPIED

Arquivos copiados com sucesso.

BYTES_COPIED

Bytes transferidos com êxito.

FILES_SKIPPED

Arquivos ignorados durante uma atualização incremental.

BYTES_SKIPPED

Bytes não processados em uma atualização incremental.

DIFF_FILES

Arquivos divergentes entre os caminhos de origem e destino.

SAME_FILES

Arquivos idênticos entre origem e destino.

DST_MISS

Arquivos ausentes no caminho de destino. Incluído em DIFF_FILES.

LENGTH_DIFF

Arquivos com tamanhos diferentes entre origem e destino. Incluído em DIFF_FILES.

CHECKSUM_DIFF

Arquivos que falharam na validação de checksum. Incluído em DIFF_FILES.

DIFF_FAILED

Arquivos cuja operação de comparação apresentou anomalias.