Use o Hadoop DistCp para copiar dados de um bucket do Object Storage Service (OSS) para um banco de dados de arquivos Lindorm em um único job MapReduce.
Pré-requisitos
Antes de começar, verifique se você tem:
O mecanismo de arquivos ativado na instância Lindorm. Para mais informações, consulte Ativar o serviço do mecanismo de arquivos.
Um cluster Hadoop com a versão 2.7.3 ou posterior, configurado para acessar o mecanismo de arquivos Lindorm. Para mais detalhes, consulte Usar clientes HDFS open source para conectar e utilizar o LindormDFS.
JDK 1.8 ou posterior instalado em todos os nós do cluster Hadoop.
JindoFS SDK instalado em todos os nós do cluster Hadoop. Consulte Instale o JindoFS SDK abaixo.
Instale o JindoFS SDK
Instale o JindoFS SDK em cada nó do cluster Hadoop antes de executar a migração.
-
Baixe o arquivo
jindofs-sdk.jarno repositório do JindoFS SDK e copie-o para o diretório de bibliotecas do Hadoop:cp ./jindofs-sdk-*.jar ${HADOOP_HOME}/share/hadoop/hdfs/lib/ -
Adicione a seguinte variável de ambiente ao arquivo
/etc/profileem cada nó:export B2SDK_CONF_DIR=/etc/jindofs-sdk-conf -
Crie o arquivo de configuração do JindoFS SDK em
/etc/jindofs-sdk-conf/bigboot.cfg:[bigboot] logger.dir=/tmp/bigboot-log [bigboot-client] client.oss.retry=5 client.oss.upload.threads=4 client.oss.upload.queue.size=5 client.oss.upload.max.parallelism=16 client.oss.timeout.millisecond=30000 client.oss.connection.timeout.millisecond=4000 -
Carregue a variável de ambiente:
source /etc/profile -
Verifique se o bucket OSS está acessível pelo cluster Hadoop:
${HADOOP_HOME}/bin/hadoop fs -ls oss://<accessKeyId>:<accessKeySecret>@<bucket-name>.<endpoint>/Se o comando retornar o conteúdo do bucket sem erros, o SDK estará configurado corretamente.
Migrar dados do bucket OSS
-
Verifique o tamanho dos dados a migrar:
${HADOOP_HOME}/bin/hadoop du -h oss://<accessKeyId>:<accessKeySecret>@<bucket-name>.<endpoint>/test_data -
Execute o DistCp para iniciar um job MapReduce que copia os dados para o banco de dados de arquivos Lindorm:
${HADOOP_HOME}/bin/hadoop distcp \ oss://<accessKeyId>:<accessKeySecret>@<bucket-name>.<endpoint>/test_data.txt \ hdfs://<instance-id>/Substitua
<instance-id>pelo ID da sua instância Lindorm.A tabela a seguir descreve os parâmetros:
Parâmetro
Descrição
Obrigatório
accessKeyIdAccessKey ID usado para autenticar chamadas à API do OSS. Para obter seu par de AccessKey, consulte Crie um par de AccessKey.
Sim
accessKeySecretAccessKey Secret usado para autenticar chamadas à API do OSS.
Sim
bucket-name.endpointEndereço de acesso ao bucket OSS, composto pelo nome do bucket e pelo endpoint da região onde ele está implantado.
Sim
-
Verifique a saída do job. A migração estará concluída quando a saída exibir:
map 100% reduce 0%Job job_xxx completed successfullyBYTESCOPIEDigual aBYTESEXPECTED
Exemplo de saída:
20/09/29 12:23:59 INFO mapreduce.Job: map 100% reduce 0% 20/09/29 12:23:59 INFO mapreduce.Job: Job job_1601195105349_0015 completed successfully 20/09/29 12:23:59 INFO mapreduce.Job: Counters: 38 File System Counters FILE: Number of bytes read=0 FILE: Number of bytes written=122343 FILE: Number of read operations=0 FILE: Number of large read operations=0 FILE: Number of write operations=0 HDFS: Number of bytes read=470 HDFS: Number of bytes written=47047709 HDFS: Number of read operations=15 HDFS: Number of large read operations=0 HDFS: Number of write operations=4 OSS: Number of bytes read=0 OSS: Number of bytes written=0 OSS: Number of read operations=0 OSS: Number of large read operations=0 OSS: Number of write operations=0 Job Counters Launched map tasks=1 Other local map tasks=1 Total time spent by all maps in occupied slots (ms)=5194 Total time spent by all reduces in occupied slots (ms)=0 Total time spent by all map tasks (ms)=5194 Total vcore-milliseconds taken by all map tasks=5194 Total megabyte-milliseconds taken by all map tasks=5318656 Map-Reduce Framework Map input records=1 Map output records=0 Input split bytes=132 Spilled Records=0 Failed Shuffles=0 Merged Map outputs=0 GC time elapsed (ms)=64 CPU time spent (ms)=2210 Physical memory (bytes) snapshot=222294016 Virtual memory (bytes) snapshot=2672074752 Total committed heap usage (bytes)=110100480 File Input Format Counters Bytes Read=338 File Output Format Counters Bytes Written=0 org.apache.hadoop.tools.mapred.CopyMapper$Counter BYTESCOPIED=47047709 BYTESEXPECTED=47047709 COPY=1 20/09/29 12:23:59 INFO common.AbstractJindoFileSystem: Read total statistics: oss read average -1 us, cache read average -1 us, read oss percent 0%
Verifique a migração
Verifique o tamanho dos dados migrados para o banco de dados de arquivos Lindorm:
${HADOOP_HOME}/bin/hadoop fs -du -s -h hdfs://<instance-id>/