【Hadoop-Distcp】通过Distcp的方式进行两个HDFS集群间的数据迁移
1)Distcp 工具简介及参数说明
2)Shell 脚本
应用场景:
两个实时集群交互数据,
A 集群
向B 集群
补充数据。主要说明:
1、将表名统一放到服务器文本
hotDataTable
中,按照需要将需要补充数据的表放入文本即可。2、
-i
参数:跳过异常,避免文件迁移过程中出现文件不存在等异常情况出现,异常会中断迁移任务。3、
-skipcrccheck
参数:跳过 crc 算法校验,会加快数据传输速度。4、
-update 与 -delete
参数:按照文件进行校验,B 集群
有的会保存,B 集群
没有的会按照A 集群
进行迁移,B 集群
多出的会进行删除。(通常update与delete一起使用)
其余说明请参考:
kinit -kt /opt/conf/test.keytab test@PRD.TEST.COM
for tablename in `cat /opt/corns/hotDataTable`
do
hadoop distcp -D ipc.client.fallback-to-simple-auth-allowed=true \
-D mapred.task.timeout=60000000 \
-D mapreduce.job.name=${tablename}-${sample_date} \
-Dmapred.job.queue.name=queuename \
-i \
-skipcrccheck \
-update \
-delete \
-direct \
-bandwidth=60 \
-m=50 \
-numListstatusThreads=40 \
webhdfs://10.1.1.1:4008/user/test/hive/dw_test.db/${tablename}/sample_date=${sample_date}/ \
hdfs://nameserver/warehouse/tablespace/external/hive/test.db/${tablename}/sample_date=${sample_date}
done