【问题标题】:Hadoop Distcp - increasing distcp.dynamic.max.chunks.tolerable config and tuning distcpHadoop Distcp - 增加 distcp.dynamic.max.chunks.tolerable 配置和调整 distcp
【发布时间】: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


    【解决方案1】:

    我能够弄清楚。可以使用 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"
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-08-26
      • 2022-10-22
      • 1970-01-01
      • 2012-10-01
      • 1970-01-01
      • 2018-05-07
      • 1970-01-01
      • 2016-02-06
      相关资源
      最近更新 更多