2016-09-17 84 views

回答

2

请记住,数据需要通过网络发送到reducer,如果您从mapper输出数据不是这样为了增加减速器的数量可能会影响性能,因为结果需要传递到不同的减速器,因为每个减速器创建自己的文件时需要创建更多文件,所以I/O操作会增加。

每个减少需要启动并在节点中创建/实例化,这会导致启动时间的增加。另外,需要将数据分解到需要更多网络传输时间和解析时间的整个数量的减速器中。

此外,还有一个最佳实践减速器的数量设置为零,如果你不使用作为Hadoop的并不需要担心创建它们,整个过程会更快

借鉴yahoo developer

减少的效率在很大程度上受洗牌效果的驱动。

为应用程序(r)配置的缩减的数量显然是一个关键因素。

有过多或过少的减少是反生产力:

太少减少的原因在其上降低定节点上的过分负载 - 在极端情况下,我们已经看到了 100GB per-减少处理减少。这也导致非常糟糕的故障恢复方案,因为单个失败的减少对作业的延迟具有显着的,不利的影响。

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

+0

感谢您的启发答案! – xxx222