2013-10-07 43 views
0

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

谢谢

回答

1

正如其名称所暗示自己当有任何可能性,结合组合,才应使用。一般来说,它应该应用于交换函数(a.b = b.a)和关联{a。(b.c)=(a.b).c}。但这只是谨慎,没有硬性规定,它必须是交换性和联想性的。组合器可能只能操作你的键和值的一个子集,或者根本不能执行。所以如果你的mapper输出中重复键的数量非常少,那么有时使用组合器可能会适得其反,反而成为无用的负担。所以只有在有足够的组合范围时才使用组合器。

从查林的“的Hadoop在行动”引用:

“A组合并不一定提高性能,您应该 监视作业的行为,看是否记录数由合成器输出 是有意义不到的记录,还原会 数量必须证明运行 组合的额外的执行时间。“

因此,你的情况有可能是子集数s可以组合在一起的比例较小,因此运行组合器的开销最终会增加执行时间。我的文章here