首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Hadoop Distcp -增加distcp.dynamic.max.chunks.tolerable配置和调整distcp

Hadoop Distcp -增加distcp.dynamic.max.chunks.tolerable配置和调整distcp
EN

Stack Overflow用户
提问于 2019-08-16 02:45:22
回答 1查看 862关注 0票数 3

我正在尝试使用distcp在两个hadoop集群之间移动数据。有大量的小文件需要移动大量的数据。为了让它更快,我尝试使用-strategy dynamic,根据文档,它“允许较快的数据节点比较慢的节点复制更多的字节”。

我将映射器的数量设置为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的价值。

然而,我不确定我如何才能增加它。可以通过像-Dmapreduce.job.queuename一样传递来更新单个mapred-site.xml作业的此配置吗?还是必须在distcp上更新它?任何帮助都将不胜感激。

另外,如果有大量的小文件,这种方法能很好地工作吗?还有没有其他参数可以让它更快呢?任何帮助都将不胜感激。

谢谢。

EN

回答 1

Stack Overflow用户

发布于 2019-08-17 00:10:59

我能够弄明白这一点。可以使用distcp命令传递参数,而不必更新mapred-site.xml:

代码语言:javascript
运行
复制
hadoop distcp -Ddistcp.dynamic.recordsPerChunk=50 -Ddistcp.dynamic.max.chunks.tolerable=10000 -skipcrccheck -m 400 -prbugc -update -strategy dynamic "hdfs://source" "hdfs://target"
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57514628

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档