CDH集群数据迁移distcp

环境为CDH6

脚本方式:

echo "123456" | kinit wnj
hadoop distcp -Ddistcp.bandwidth=500000000 -Dipc.client.fallback-to-simple-auth-allowed=true  hdfs://10.44.200.101:8020/user/wnj/hivetable/test/ /user/hive/warehouse/test/

-Ddistcp.bandwidth=500000000 带宽设置为500M

-Dipc.client.fallback-to-simple-auth-allowed=true #将数据从不安全的集群迁移到安全的集群,降低安全配置

因为新集群HDFS配置Kerberos认证。

因为CDH6的workflows的distcp ACTION操作,外加配上Kerberos认证秘钥文件也无法执行从非安全的集群到安全集群数据的迁移,故使用Shell方式。

注:其中涉及到一些MapReduce、distcp命令的配置与参数问题。见下表。可以根据集群系能以及业务需求选择合适的配置参数进行迁移。

DistCp命令行选项如表1所示:
标识    描述    备注
-p[rbugp]    Preserve
r:replication number
b: block size
u: user
g: group
p: permission
-i    忽略失败    这个选项会比默认情况提供关于拷贝的更精确的统计,
-log     记录日志到
-m
    同时拷贝的最大数目    指定了拷贝数据时map的数目。请注意并不是map数越多吞吐量越大。
-overwrite    覆盖目标    用户要小心使用这个选项。
-update    如果源和目标的大小不一样则进行覆盖    用户使用要小心。
-f
    用 作为源文件列表    这等价于把所有文件名列在命令行中。 urilist_uri 列表应该是完整合法的URI。
    原文链接:https://blog.csdn.net/yinansheng1/article/details/78402459
hadoop distcp -Dmapred.jobtracker.maxtasks.per.job=1800000 \   #任务最大map数(数据分成多map任务)
-Dmapred.job.max.map.running=4000 \              #最大map并发
-Ddistcp.bandwidth=150000000 \                   #带宽
-Ddfs.replication=2 \                            #复制因子,两副本
-Ddistcp.skip.dir=$skipPath \                    #过滤的目录(不拷贝的目录)
-Dmapred.map.max.attempts=9 \                    #每个task最大尝试次数
-Dmapred.fairscheduler.pool=distcp \             #指定任务运行的pool
-pugp \                                          #保留属性(用户,组,权限)
-i \                                             #忽略失败的task
-skipcrccheck \                                  #忽略CRC校验(防止源,目标集群hdfs版本不一致导致任务失败。)
hdfs://clusterA:9000/AAA/data  \                 #源地址
hdfs://clusterB:9000/BBB/data                    #目标地址
    原文链接:http://www.mamicode.com/info-detail-1976865.html
数据量很大的情况下,内存问题MapReduce调优。可以在distcp命令后添加配置参数。
https://www.cnblogs.com/xjh713/p/9681442.html
https://www.cnblogs.com/tesla-turing/p/11958845.html

 

Shell脚本一个Workflows,循环执行所有要迁移的数据:

echo "123456" | kinit wnj
#!/bin/bash
for a in {908..942}
do
   hadoop distcp -Ddistcp.bandwidth=500000000 -Dipc.client.fallback-to-simple-auth-allowed=true hdfs://10.44.200.101:8020/user/wnj/hivetable/$a/ /user/hive/warehouse/wnj.db/a_table
done

在这里可以使用脚本语言,一次性添加所有需要迁移的数据,一次性执行。

 

你可能感兴趣的:(大数据)