当我们不在Mapreduce中使用Combiner时?

时间:2015-04-17 10:33:21

标签: hadoop mapreduce

每个Hadoop开发人员都知道Combiner是优化mapreduce的关键,但它是可选的。它可以最小化带宽并提高mapreduce工作性能。在这里我的问题是,hadoop默认使用许多功能,例如数据位置问题,但不能将Combiner作为默认值。为什么?这意味着在所有情况下组合器都不值得推荐?当我们不使用合成器时?如果我将它作为默认值来解决问题吗?

2 个答案:

答案 0 :(得分:4)

可以使用Combiner,以防reduce函数同时可交换和关联。这是因为值在以任意顺序随机播放之前在本地组合。


交换 - 我们对值进行操作的顺序对结果没有任何影响:

  

1 + 2 + 3 = 1 + 3 + 2

关联 - 我们根据值处理操作的顺序对结果没有任何影响:

  

(1 + 2)+ 3 = 1 +(2 + 3)

使用合成器e非常好。 G。对于sum()操作,但有些操作不起作用。因此,程序员始终有责任决定组合器是否可用于特定算法。

答案 1 :(得分:0)

如果您在工作中设置了组合器,那么Hadoop将决定是否根据数据运行组合器。

但是如果你没有设置组合器,那么Hadoop将不会运行组合器。

当合并器运行时,它会减小输出的大小。因此,少量数据将在网络中传播。

对于组合器和减速器之间的差异,请查看以下链接:

http://blog.optimal.io/3-differences-between-a-mapreduce-combiner-and-reducer/