我今天在AWS上使用不同数量的减速器运行我的Hadoop程序,但我观察到的是减速器的数量增加,时间而不是减少增加。对于时间,我的意思是从地图100%,减少30%到地图100%,减少100%
答案 0 :(得分:2)
请记住,数据需要通过网络发送到Reducer,如果从mapper输出的数据不是很大,增加reducers的数量可能会达到性能,结果需要转移到不同的reducer,当你需要创建更多文件时,I / O操作会增加,因为每个reducer都会创建自己的文件。
每个reduce都需要启动并在节点中创建/实例化,这会导致启动时间增加。此外,数据需要在整个数量的reducer之间分割,这需要更多的网络传输时间和解析时间。
此外,最佳做法是将减速器数量设置为零,如果您不使用,因为Hadoop不需要担心创建它们并且整个过程会更快
的参考资料减少的效率在很大程度上是由 洗牌的表现。
为应用程序(r)配置的减少数量是, 显然,这是一个至关重要的因素。
减少太多或太少都会导致反效果:
太少会降低导致计划减少的节点上的过度负载 - 在极端情况下,我们已经看到减少了处理 每减少100GB。这也导致非常糟糕的故障恢复 场景,因为单个失败减少,具有显着的,不利的, 对工作延迟的影响。
太多减少会对洗牌横杆产生不利影响。此外,在极端情况下,它会导致创建太多小文件作为输出 这项工作 - 这会伤害NameNode和性能 后续Map-Reduce需要处理大量小型应用程序的应用程序 文件。