我是MapReduce的初学者。根据我的理解,可以通过在单个Map节点上进行聚合来使用Combiner来提高性能。

我的问题是:合并器会在Map的所有数据集上执行吗?还是在MapReduce中运行组合器步骤是可选的?

最佳答案

当我们在较大的MapReduce上运行dataset作业时,Mapper会生成大量的中间数据,并且框架会将这些中间数据传递给Reducer进行进一步处理。这导致巨大的网络拥塞。

MapReduce框架提供了称为Combiner的功能,该功能在减少网络拥塞方面起着至关重要的作用。 Combiner也称为小型减速器。


  combiner是否会在Map的所有数据集上执行?


不,combiner在每次缓冲区溢出时执行。请注意,即使在单个映射阶段,缓冲区溢出也会发生多次。


  还是在combiner中运行MapReduce步骤是可选的?


向作业添加combiner是可选的。这意味着如果不添加combiner,则框架

1)不会抱怨

2)不会明确添加任何默认组合器。

现在开始执行-默认情况下,combiner是可选的,并且mapreduce框架不能保证执行指定给作业的combiner

关于java - 在MapReduce框架中,为什么不能保证合并器执行?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49752365/

10-10 16:33