我试图找出简单的hadoop wordcount示例中需要花费多少时间的步骤。 在此示例中,使用3个映射和1个reducer,其中每个映射生成~7MB shuffle数据。我有一个通过1Gb交换机连接的集群。当我查看工作细节时,意识到在完成所有地图任务之后需要大约7秒的改组,这比传输这么小的数据要多。这背后的原因是什么?感谢
答案 0 :(得分:1)
在地图步骤之后,转移不是唯一要完成的事情。每个映射器在本地输出它们的给定分割的一部分并对其进行排序。负责特定拆分的reducer然后从每个映射器输出收集部件,每个部件需要传输7 MB。然后,reducer必须将这些段合并到最终的排序文件中。
老实说,你正在测试的规模是非常小的。我不知道Hadoop shuffle步骤的所有部分,我理解它有一些涉及的细节,但你不应该期望这些小文件的性能表明较大文件的实际性能。
答案 1 :(得分:1)
Hadoop使用心跳与节点进行通信。默认情况下,hadoop使用最小心跳间隔等于3秒。因此,hadoop在两次心跳(大约6秒)内完成你的任务。
答案 2 :(得分:0)
我认为在第一张映射器开始后,洗牌开始了。但等待接下来的两位地图制作者。
在所有映射器完成后,可以选择启动减少阶段(以混洗开始)。但这并没有真正加速任何事情。
(顺便说一句。在Hadoop中,7秒被认为很快.Hadoop的性能很差。特别是对于小文件。除非其他人为此付费。不要使用Hadoop。)