我是MapReduce的初学者。据我了解,Combiner 可以通过在单个 Map 节点上进行聚合来提高性能。
我的问题是:combiner 会在 Map 的所有数据集上执行吗?或者在MapReduce中运行组合器步骤是可选的?
最佳答案
当我们在大型数据集
上运行MapReduce
作业时,Mapper会生成大量中间数据,框架会将这些中间数据传递给Reducer进行进一步处理。这导致了巨大的网络拥塞。
MapReduce
框架提供了一种称为 Combiner 的功能,它在减少网络拥塞方面发挥着至关重要的作用。 Combiner
也称为 Mini-reducer。
Will
combiner
gets executed on all the data set of Map?
不,combiner
在每次缓冲区溢出时执行。请注意,即使在单个映射阶段,缓冲区溢出也可能多次发生。
Or Running
combiner
step inMapReduce
is optional?
向作业添加组合器
是可选的。这意味着如果您不添加combiner
,框架
1) 不会提示
2) 不会显式添加任何默认组合器。
现在开始执行 - 默认情况下,combiner
是可选的,mapreduce
框架不保证执行分配给作业的combiner
。
关于java - 在MapReduce框架中,为什么combiner不能保证执行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49752365/