我是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/