【发布时间】:2019-12-22 04:30:11
【问题描述】:
我正在尝试使用 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 一样传递它来为单个 distcp 作业更新此配置,还是我必须在 mapred-site.xml 上更新它?任何帮助将不胜感激。
如果有大量小文件,这种方法是否也能很好地工作?我可以使用其他任何参数来使其更快吗?任何帮助将不胜感激。
谢谢。
【问题讨论】:
标签: hadoop configuration mapreduce distcp