【问题标题】:Execuation time of MapReduce with CombinerMapReduce 与 Combiner 的执行时间
【发布时间】:2013-10-07 12:46:16
【问题描述】:

我有一个 MapReduce 作业,它读取一个文件,然后收集所有不超过 5 个字符的单词,并使用第一个字母作为键以大写字母开头。我在没有使用组合器的情况下运行了两次工作,第二次使用组合器运行了这项工作。我比较了执行时间,我注意到使用组合器增加了执行时间。我想知道是什么导致时间增加,使用组合器时总是这样吗?

谢谢

【问题讨论】:

    标签: hadoop mapreduce combiners


    【解决方案1】:

    顾名思义,组合器只应在有任何组合的可能性时使用。一般来说,它应用于交换函数(a.b = b.a) 和关联函数 {a.(b.c) = (a.b).c} 。但这只是为了谨慎起见,没有硬性规定它必须是可交换的和关联的。组合器可能仅对您的键和值的子集进行操作,或者可能根本不执行。因此,如果映射器输出中的重复键数量非常少,那么有时使用组合器可能会适得其反,反而会成为无用的负担。所以只有在有足够的组合范围时才使用组合器。

    引用 Chuck Lam 的“Hadoop in Action”:

    “组合器不一定会提高性能。您应该 监控作业的行为,查看输出的记录数 由组合器有意义地小于记录的数量 中的减少必须证明运行一个额外的执行时间是合理的 合路器。 "

    因此,在您的情况下,可以组合的子集的数量可能会更少,因此运行组合器的开销最终会增加您的执行时间。

    阅读我的文章here了解更多信息。

    【讨论】:

      猜你喜欢
      • 2012-04-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-15
      • 2017-05-28
      • 1970-01-01
      • 2014-03-28
      • 1970-01-01
      相关资源
      最近更新 更多