java - 在MapReduce框架中,为什么combiner不能保证执行?

标签 java mapreduce

我是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 in MapReduce is optional?

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

1) 不会提示

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

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

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

相关文章:

java - Java中long,double,byte,char的目的是什么?

java - 如何在Java中根据鼠标位置向上旋转物体

python - Python 中经典 Hadoop 字数统计示例中的数据流

hadoop - 如何中止映射器(或 reducer )内的 MR 作业

java - 在我的 Map-Reduce 作业中包含第三方库(使用分布式缓存)

java - GWT for 循环不是循环

java - 使用 Java 创建具有相似名称的文件而不覆盖现有文件

java - 如何在 JPanel 上覆盖、调整大小和居中组件?

java - 从集群中的所有计算机访问 HDFS 文件

Java 字符串变量在运行时损坏