【发布时间】:2013-11-22 02:01:51
【问题描述】:
我试图弄清楚在简单的 hadoop wordcount 示例中哪些步骤需要花费多少时间。 在这个例子中,使用了 3 个 map 和 1 个 reducer,每个 map 生成约 7MB 的 shuffle 数据。我有一个通过 1Gb 交换机连接的集群。当我查看作业详细信息时,意识到在所有地图任务完成后洗牌大约需要 7 秒,这超出了传输如此小的数据的预期。这背后的原因可能是什么?谢谢
【问题讨论】:
-
经过几个小时的调试,我想我找到了 7 秒洗牌时间的原因。当reduce任务准备好获取中间数据时,它检查是否有任何中间数据准备好获取,如果没有,则等待硬编码5秒,然后再次检查
if (numInFlight == 0 && numScheduled == 0) { reporter.progress(); Thread.sleep(5000); }
标签: hadoop