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