当减速器达到一定数量时,为什么Hadoop作业的时间会显着减少

时间:2017-06-30 03:03:40

标签: hadoop mapreduce

我测试了基于MapReduce的算法的可扩展性,减少了越来越多的reducer。它一般看起来很好(时间随着减速器的增加而减少)。但是当减速器达到一定数量(在我的hadoop集群中为30)而不是逐渐减少时,作业的时间总是显着减少。可能的原因是什么?

关于我的Hadoop工作的一些事情: (1)光照相位。只输入几百行。每行将生成大约五千个键值对。整个地图阶段不会超过2分钟。 (2)重度减少阶段。 reduce函数中的每个键都将匹配1-2000个值。并且减少阶段的算法是非常计算密集的。通常,减少阶段大约需要30分钟才能完成。

时间表现图:

enter image description here

2 个答案:

答案 0 :(得分:0)

恕我直言可能有足够数量的reducers可用网络IO(传输中间结果)在每个减少阶段之间减少。
由于网络IO通常是大多数Map-Reduce程序的瓶颈。所需的网络IO的减少将带来显着的改善。

答案 1 :(得分:0)

应该是因为没有键值对。在特定的减速器中,它们被均匀地分配给减速器,这导致所有减速器几乎同时执行任务。否则可能是组合器继续等待1或2个重载减速器完成那里工作的情况。