【问题标题】:When we are not use Combiner in Mapreduce?当我们不在 Mapreduce 中使用 Combiner 时?
【发布时间】:2016-10-02 01:07:59
【问题描述】:

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

【问题讨论】:

    标签: hadoop mapreduce


    【解决方案1】:

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


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

    1 + 2 + 3 = 1 + 3 + 2

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

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

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

    【讨论】:

    • 感谢您的评论。为什么组合器不能用于 avg() 操作?
    【解决方案2】:

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

    但是如果你不设置combiner,Hadoop将不会运行combiner。

    combiner 运行时,它会减小输出的大小。因此会有少量数据在网络中传播。

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

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

    【讨论】:

    • 它根本不回应任何有用的问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-04-30
    • 2018-08-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-22
    相关资源
    最近更新 更多