Todos os produtos
Search
Central de documentação

E-MapReduce:Use Jindo DistCp

Última atualização: Jun 27, 2026

O Jindo DistCp é uma ferramenta de cópia distribuída desenvolvida pela equipe de armazenamento de data lake da Alibaba Cloud para transferir grandes volumes de dados entre sistemas de armazenamento: Hadoop Distributed File System (HDFS), OSS-HDFS, Object Storage Service (OSS) e Amazon Simple Storage Service (Amazon S3). Ela usa MapReduce para paralelizar transferências, tratar erros e recuperar-se de falhas. Ao copiar do HDFS para o OSS-HDFS, o Jindo DistCp emprega um CopyCommitter personalizado que copia arquivos sem renomeá-los, mantendo as cópias consistentes com a origem. O Jindo DistCp oferece suporte a todos os recursos do Amazon S3 DistCp e do HDFS DistCp. Em comparação com o HDFS DistCp, o Jindo DistCp melhora significativamente a eficiência, a estabilidade e a segurança na cópia de dados.

Pré-requisitos

Antes de começar, verifique se você tem:

  • Java Development Kit (JDK) 1.8.0 instalado

  • O arquivo JAR do Jindo DistCp (jindo-distcp-tool-x.x.x.jar):

    • No EMR V5.6.0 ou superior (versões menores), ou EMR V3.40.0 ou superior (versões menores): o JAR vem pré-instalado em /opt/apps/JINDOSDK/jindosdk-current/tools.

    • No Hadoop 2.3 ou superior (não EMR): baixe o pacote jindosdk-${version}.tar.gz em Download do JindoData, extraia-o e localize o arquivo jindo-distcp-tool-x.x.x.jar na pasta /tools.

Parâmetros

Execute o Jindo DistCp com o comando hadoop jar:

hadoop jar jindo-distcp-tool-${version}.jar --src <source> --dest <destination> [options]

A tabela a seguir resume todos os parâmetros. Consulte as seções abaixo para obter detalhes sobre cada um.

Parâmetro

Obrigatório

Padrão

Versão

OSS

OSS-HDFS

Descrição

--src

Sim

4.3.0+

Suportado

Suportado

Caminho de origem

--dest

Sim

4.3.0+

Suportado

Suportado

Caminho de destino

--bandWidth

Não

-1

4.3.0+

Suportado

Suportado

Limite de largura de banda por tarefa (MB); -1 indica sem limite

--codec

Não

keep

4.3.0+

Suportado

Suportado

Codec de compactação para arquivos de destino

--policy

Não

Standard

4.3.0+

Suportado

Não suportado

Classe de armazenamento do OSS para arquivos de destino

--filters

Não

4.3.0+

Suportado

Suportado

Arquivo contendo padrões regex para exclusão

--srcPrefixesFile

Não

4.3.0+

Suportado

Suportado

Arquivo contendo padrões regex para inclusão

--parallelism

Não

10

4.3.0+

Suportado

Suportado

Número de tarefas de map (equivalente a mapreduce.job.maps)

--jobBatch

Não

10.000

4.5.1+

Suportado

Suportado

Máximo de arquivos por job

--taskBatch

Não

1

4.3.0+

Suportado

Suportado

Arquivos por tarefa de map

--tmp

Não

/tmp

4.3.0+

Suportado

Suportado

Diretório temporário do HDFS

--hadoopConf <key=value>

Não

4.3.0+

Suportado

Suportado

Configuração inline do Hadoop (para credenciais)

--disableChecksum

Não

false

4.3.0+

Suportado

Suportado

Ignora a verificação de checksum após a cópia

--deleteOnSuccess

Não

false

4.3.0+

Suportado

Suportado

Exclui arquivos de origem após uma cópia bem-sucedida

--enableTransaction

Não

false

4.3.0+

Suportado

Suportado

Ativa atomicidade no nível do job

--ignore

Não

false

4.3.0+

Suportado

Suportado

Continua o job quando falhas ocorrem em cópias individuais de arquivos

--enableCMS

Não

false

4.5.1+

Suportado

Suportado

Ativa monitoramento e alertas via CloudMonitor

--diff

Não

DistCpMode.COPY

4.3.0+

Suportado

Suportado

Gera um arquivo registrando diferenças entre origem e destino

--update

Não

DistCpMode.COPY

4.3.0+

Suportado

Suportado

Copia apenas arquivos ausentes ou diferentes no destino

--preserveMeta

Não

false

4.4.0+

Não suportado

Suportado

Copia metadados do arquivo (Owner, Group, Permission, etc.)

O parâmetro --policy aplica-se apenas ao OSS. O parâmetro --preserveMeta aplica-se apenas ao OSS-HDFS, pois o OSS não possui um modelo de metadados equivalente ao do HDFS. Todos os outros parâmetros funcionam tanto com OSS quanto com OSS-HDFS.

--src e --dest

Versão: 4.3.0+ | OSS: Suportado | OSS-HDFS: Suportado

O parâmetro --src especifica o caminho de origem. O parâmetro --dest especifica o caminho de destino. Ambos aceitam os seguintes prefixos: hdfs://, oss://, s3://, cos://, obs://.

Por padrão, o Jindo DistCp copia o conteúdo do diretório de origem, e não o diretório em si. Caso o diretório de destino não exista, o Jindo DistCp o cria automaticamente.

Copie um diretório:

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

Esse comando copia todos os arquivos dentro de /data/hourly_table para oss://example-oss-bucket/hourly_table/.

Copie um único arquivo (especifique um diretório de destino, não o caminho de um arquivo):

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

--bandWidth

Versão: 4.3.0+ | OSS: Suportado | OSS-HDFS: Suportado

Limita a largura de banda usada por cada tarefa de map. Unidade: MB. Use este parâmetro para evitar que jobs de cópia saturem a rede. O valor padrão -1 significa sem limite.

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

--codec

Versão: 4.3.0+ | OSS: Suportado | OSS-HDFS: Suportado

Compacta ou descompacta arquivos durante a cópia. Valores válidos: gzip, gz, lzo, lzop, snappy, none, keep.

Valor

Comportamento

keep (padrão)

Copia os arquivos como estão, sem compactar ou descompactar

none

Copia sem compactação; descompacta o arquivo de origem se ele estiver compactado

gzip, gz, lzo, lzop, snappy

Compacta o arquivo de destino usando o codec especificado

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

Após a conclusão do job, os arquivos de destino terão a extensão .gz:

oss://example-oss-bucket/hourly_table/2017-02-01/03/000151.sst.gz
oss://example-oss-bucket/hourly_table/2017-02-01/03/1.log.gz
oss://example-oss-bucket/hourly_table/2017-02-01/03/2.log.gz
oss://example-oss-bucket/hourly_table/2017-02-01/03/OPTIONS-000109.gz
oss://example-oss-bucket/hourly_table/2017-02-01/03/emp01.txt.gz
oss://example-oss-bucket/hourly_table/2017-02-01/03/emp06.txt.gz
Para usar lzo em um cluster Hadoop open source, instale primeiro a biblioteca nativa gplcompression e o pacote hadoop-lzo. Em clusters sem essas dependências, use um codec diferente.

--policy

Versão: 4.3.0+ | OSS: Suportado | OSS-HDFS: Não suportado

Define a classe de armazenamento para arquivos copiados para o OSS. O padrão é Standard. Valores suportados:

Valor

Classe de armazenamento

Observações

(não definido)

Standard

Padrão

ia

Infrequent Access (IA)

Custo reduzido para dados acessados menos de uma vez por mês

archive

Archive

Para arquivamento de longo prazo; a recuperação leva alguns minutos

coldArchive

Cold Archive

Para dados raramente acessados; suportado apenas em regiões específicas

Exemplo com Cold Archive (verifique antes a disponibilidade por região):

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

Exemplo com Archive:

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

Exemplo com IA:

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

--filters

Versão: 4.3.0+ | OSS: Suportado | OSS-HDFS: Suportado

Exclui arquivos da cópia com base em padrões regex. Aponte --filters para um arquivo contendo um padrão regex por linha. Arquivos cujos caminhos correspondam a qualquer padrão serão ignorados.

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

Se filter.txt contiver .*test.*, arquivos com test em qualquer parte do caminho serão excluídos.

--srcPrefixesFile

Versão: 4.3.0+ | OSS: Suportado | OSS-HDFS: Suportado

Copia apenas os arquivos cujos caminhos correspondem aos padrões regex no arquivo especificado. Este parâmetro funciona de forma inversa ao --filters: somente os arquivos correspondentes são incluídos.

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

Caso prefixes.txt contenha .*test.*, apenas arquivos com test no caminho serão copiados.

--parallelism

Versão: 4.3.0+ | OSS: Suportado | OSS-HDFS: Suportado

Defina o número de tarefas de map para o job do DistCp, equivalente ao parâmetro mapreduce.job.maps. O valor padrão no EMR é 10.

Como os arquivos representam a menor unidade de trabalho em um job do DistCp, aumentar o número de tarefas de map além da quantidade total de arquivos não traz benefícios. Adicionar mais tarefas melhora o throughput apenas quando o cluster dispõe de capacidade ociosa de CPU e rede. Ajuste esse valor considerando o tamanho do seu cluster, a quantidade de arquivos e a largura de banda disponível.

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

--jobBatch

Versão: 4.5.1+ | OSS: Suportado | OSS-HDFS: Suportado

Defina o número máximo de arquivos processados por job do DistCp. Padrão: 10000. Aumente este valor ao copiar grandes conjuntos de dados para reduzir a sobrecarga do job.

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

--taskBatch

Versão: 4.3.0+ | OSS: Suportado | OSS-HDFS: Suportado

Defina a quantidade de arquivos processados por tarefa de map. Padrão: 1.

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

--tmp

Versão: 4.3.0+ | OSS: Suportado | OSS-HDFS: Suportado

Especifica o diretório HDFS usado para armazenar dados temporários. Padrão: /tmp (resolve para hdfs:///tmp/).

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

--hadoopConf

Versão: 4.3.0+ | OSS: Suportado | OSS-HDFS: Suportado

Passa propriedades de configuração do Hadoop diretamente na linha de comando. Use esta opção para fornecer credenciais para OSS ou OSS-HDFS em ambientes fora do EMR, ou quando o acesso sem AccessKey não estiver disponível.

hadoop jar jindo-distcp-tool-${version}.jar \
  --src /data/hourly_table \
  --dest oss://example-oss-bucket/hourly_table \
  --hadoopConf fs.oss.accessKeyId=<your-access-key-id> \
  --hadoopConf fs.oss.accessKeySecret=<your-access-key-secret>

Para evitar passar credenciais em cada comando, adicione-as ao arquivo core-site.xml do serviço Hadoop-Common no console do EMR:

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

--disableChecksum

Versão: 4.3.0+ | OSS: Suportado | OSS-HDFS: Suportado

Ignora a verificação de checksum após a cópia. Por padrão, o Jindo DistCp verifica os checksums dos arquivos para confirmar a integridade dos dados. Desative essa verificação apenas quando ela causar falsas falhas — por exemplo, ao copiar entre sistemas de armazenamento que usam algoritmos de checksum incompatíveis.

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

--deleteOnSuccess

Versão: 4.3.0+ | OSS: Suportado | OSS-HDFS: Suportado

Exclui os arquivos de origem após uma cópia bem-sucedida — semelhante a uma operação mv. Use este recurso para migração de dados quando os arquivos de origem não forem mais necessários após a transferência.

Importante

A exclusão é irreversível. Verifique se a cópia foi concluída com sucesso antes de usar este sinalizador em produção.

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

--enableTransaction

Versão: 4.3.0+ | OSS: Suportado | OSS-HDFS: Suportado

Ativa atomicidade no nível do job. Por padrão, o Jindo DistCp garante a integridade dos dados no nível da tarefa — uma tarefa com falha não afeta as demais. Com --enableTransaction, todo o job tem sucesso ou falha como uma unidade única: nenhum resultado parcial é gravado no destino.

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

--ignore

Versão: 4.3.0+ | OSS: Suportado | OSS-HDFS: Suportado

Permite que o job continue quando falhas ocorrerem em cópias individuais de arquivos, em vez de interromper toda a execução. Os arquivos com falha são registrados nos contadores do Jindo DistCp (consulte COPY_FAILED). Se o CloudMonitor estiver ativado, alertas serão enviados pelos canais de notificação configurados.

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

--diff

Versão: 4.3.0+ | OSS: Suportado | OSS-HDFS: Suportado

Ativa o modo DIF. Nesse modo, caso um arquivo de origem não seja copiado para o diretório de destino, um arquivo é gerado no diretório onde o comando foi executado para registrar as diferenças entre os arquivos de origem e destino.

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

Exemplo de saída quando existem diferenças:

JindoCounter
DIFF_FILES=1

Para incluir metadados na comparação, combine --diff com --preserveMeta:

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

Limitações:

  • Diferenças no tamanho dos arquivos podem não ser precisas se o Jindo DistCp aplicou compactação ou descompactação durante uma cópia anterior.

  • Quando --dest for um caminho HDFS, use /path, hdfs://hostname:port/path ou hdfs://headerIp:port/path. Os formatos hdfs:///path e hdfs:/path não são suportados.

--update

Versão: 4.3.0+ | OSS: Suportado | OSS-HDFS: Suportado

Copia apenas arquivos ausentes no destino ou diferentes dos arquivos correspondentes já existentes. Ideal para retomar um job interrompido ou sincronizar novos arquivos adicionados à origem.

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

--preserveMeta

Versão: 4.4.0+ | OSS: Não suportado | OSS-HDFS: Suportado

Copia os metadados do arquivo juntamente com seu conteúdo. Os seguintes atributos de metadados são preservados: Owner, Group, Permission, Atime, Mtime, Replication, BlockSize, XAttrs e ACL.

O OSS não suporta este parâmetro porque não possui um modelo de metadados equivalente ao do HDFS. Use este parâmetro apenas quando o destino for OSS-HDFS.
hadoop jar jindo-distcp-tool-${version}.jar \
  --src /data/hourly_table \
  --dest oss://example-oss-bucket/hourly_table \
  --preserveMeta

--enableCMS

Versão: 4.5.1+ | OSS: Suportado | OSS-HDFS: Suportado

Ativa monitoramento e alertas por meio do CloudMonitor. Quando ativo, o CloudMonitor envia notificações pelos canais de alerta configurados sempre que ocorrerem erros de cópia.

Contadores do Jindo DistCp

Após cada job, o Jindo DistCp relata estatísticas de execução por meio de contadores. Use-os para verificar resultados de cópia e diagnosticar problemas.

Contador

Descrição

FILES_EXPECTED

Quantidade de arquivos esperados para cópia

BYTES_EXPECTED

Volume de bytes esperados para cópia

FILES_COPIED

Total de arquivos copiados com sucesso

BYTES_COPIED

Total de bytes copiados com sucesso

FILES_SKIPPED

Arquivos ignorados durante atualização incremental (--update)

BYTES_SKIPPED

Bytes ignorados durante atualização incremental

COPY_FAILED

Arquivos que falharam na cópia

CHECKSUM_DIFF

Arquivos que falharam na verificação de checksum; incluído em COPY_FAILED (no modo de cópia) e em DIFF_FILES (no modo --diff)

DIFF_FILES

Arquivos diferentes entre origem e destino (modo --diff)

SAME_FILES

Arquivos idênticos na origem e no destino (modo --diff)

DST_MISS

Arquivos ausentes no destino; incluído em DIFF_FILES

LENGTH_DIFF

Arquivos com tamanhos diferentes entre origem e destino; incluído em DIFF_FILES

DIFF_FAILED

Arquivos que não puderam ser comparados