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

In MapReduce framework why combiner is not guaranteed to execute?

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

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

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

MapReduce 框架提供了一个称为 Combiner 的功能,它在减少网络拥塞方面起着至关重要的作用。 Combiner 也称为 Mini-reducer。

Will combiner gets executed on all the data set of Map?

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

Or Running combiner step in MapReduce is optional?

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

1) 不会抱怨

2) 不会显式添加任何默认组合器。

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