hadoop distcp-增加distcp.dynamic.max.chunks.tolerable配置和调优distcp

hgqdbh6s  于 2021-05-29  发布在  Hadoop
关注(0)|答案(1)|浏览(1054)

我正在尝试使用 distcp . 有大量的数据与大量的小文件一起移动。为了加快速度,我试着用 -strategy dynamic ,根据文档,“允许更快的数据节点比较慢的节点复制更多的字节”。
我把Map绘制者的数目设为400。启动作业时,我看到以下错误: java.io.IOException: Too many chunks created with splitRatio:2, numMaps:400. Reduce numMaps or decrease split-ratio to proceed. 当我在谷歌上搜索时,我发现了这个链接:https://issues.apache.org/jira/browse/mapreduce-5402 在这个链接中,作者要求提供一个我们可以增加 distcp.dynamic.max.chunks.tolerable 解决问题。
罚单上说问题在版本中得到了解决 2.5.0 . 我使用的hadoop版本是 2.7.3 . 所以我相信我有可能提高 distcp.dynamic.max.chunks.tolerable .
然而,我不知道如何才能增加。可以通过如下方式为单个distcp作业更新此配置吗 -Dmapreduce.job.queuename 或者我必须更新它 mapred-site.xml ? 任何帮助都将不胜感激。
如果有大量的小文件,这种方法是否也能很好地工作?有没有其他参数可以用来加快速度?任何帮助都将不胜感激。
谢谢您。

vlju58qv

vlju58qv1#

我终于弄明白了。可以使用distcp命令传递参数,而不必更新mapred-site.xml:

hadoop distcp -Ddistcp.dynamic.recordsPerChunk=50 -Ddistcp.dynamic.max.chunks.tolerable=10000 -skipcrccheck -m 400 -prbugc -update -strategy dynamic "hdfs://source" "hdfs://target"

相关问题