在MapReduce框架中,为什么不能保证组合器执行?

时间:2018-04-10 11:22:30

标签: java mapreduce

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

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

1 个答案:

答案 0 :(得分:2)

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

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

  

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

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

  

combiner中的MapReduce步骤是可选的吗?

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

1)不会抱怨

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

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