我们什么时候不在Mapreduce中使用Combiner?

问题描述 投票:0回答:2

每个 Hadoop 开发人员都知道 Combiner 是优化 mapreduce 的关键,但它是可选的。它可以最小化 bandwidth 并提高 mapreduce 作业性能。这里我的问题是,hadoop 默认情况下会设置许多功能,例如数据局部性问题,但不会将 Combiner 设置为默认值。为什么?这意味着在所有情况下都不推荐组合器?我们什么时候不使用组合器?如果我将其设为默认值,那有什么问题?

hadoop mapreduce
2个回答
5
投票

Combiner 可以用来防止 reduce 函数既是 commutative 又是 associative。这是因为在以任意顺序随机播放之前,值是在本地组合的。


Commutative - 我们处理值操作的顺序在某种程度上对结果没有影响:

1 + 2 + 3 = 1 + 3 + 2

Associative - 我们处理值操作的顺序在某种程度上对结果没有影响:

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

所以用combiner e就好了。 G。对于

sum()
操作,但有些操作不起作用。因此,决定组合器是否可用于特定算法始终是程序员的责任。


-1
投票

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

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

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

combiner和reducer的区别,查看以下链接:

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

© www.soinside.com 2019 - 2024. All rights reserved.