为什么增加减速器的数量会增加减速阶段的运行时间?

时间:2016-09-17 00:30:49

标签: hadoop mapreduce

我今天在AWS上使用不同数量的减速器运行我的Hadoop程序,但我观察到的是减速器的数量增加,时间而不是减少增加。对于时间,我的意思是从地图100%,减少30%到地图100%,减少100%

1 个答案:

答案 0 :(得分:2)

请记住,数据需要通过网络发送到Reducer,如果从mapper输出的数据不是很大,增加reducers的数量可能会达到性能,结果需要转移到不同的reducer,当你需要创建更多文件时,I / O操作会增加,因为每个reducer都会创建自己的文件。

每个reduce都需要启动并在节点中创建/实例化,这会导致启动时间增加。此外,数据需要在整个数量的reducer之间分割,这需要更多的网络传输时间和解析时间。

此外,最佳做法是将减速器数量设置为零,如果您不使用,因为Hadoop不需要担心创建它们并且整个过程会更快

来自yahoo developer

的参考资料
  

减少的效率在很大程度上是由   洗牌的表现。

     

为应用程序(r)配置的减少数量是,   显然,这是一个至关重要的因素。

     

减少太多或太少都会导致反效果:

     

太少会降低导致计划减少的节点上的过度负载 - 在极端情况下,我们已经看到减少了处理   每减少100GB。这也导致非常糟糕的故障恢复   场景,因为单个失败减少,具​​有显着的,不利的,   对工作延迟的影响。

     

太多减少会对洗牌横杆产生不利影响。此外,在极端情况下,它会导致创建太多小文件作为输出   这项工作 - 这会伤害NameNode和性能   后续Map-Reduce需要处理大量小型应用程序的应用程序   文件。