环境为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 <logdir> 记录日志到 <logdir>
-m
<num_maps> 同时拷贝的最大数目 指定了拷贝数据时map的数目。请注意并不是map数越多吞吐量越大。
-overwrite 覆盖目标 用户要小心使用这个选项。
-update 如果源和目标的大小不一样则进行覆盖 用户使用要小心。
-f
<urilist_uri> 用<urilist_uri> 作为源文件列表 这等价于把所有文件名列在命令行中。 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
在这里可以使用脚本语言,一次性添加所有需要迁移的数据,一次性执行。