mapreduce与combiner的执行时间

nfeuvbwi  于 2021-06-03  发布在  Hadoop
关注(0)|答案(1)|浏览(468)

我有一个mapreduce的工作,读取一个文件,然后收集所有的字是5个字符或更少,并以大写字母开始使用第一个字母作为一个关键。我运行了两次作业,一次不使用合路器,第二次使用合路器。我比较了执行时间,发现使用组合器增加了执行时间。我想知道是什么原因导致了时间的增加,在使用合路器时总是这样吗?
谢谢您

t1qtbnec

t1qtbnec1#

顾名思义,合路器只能在有可能合路的情况下使用。通常,它应用于交换函数(a.b=b.a)和结合函数{a.(b.c)=(a.b).c}。但这只是为了谨慎,没有硬性规定,它必须是交换的和结合的。组合器可能只对键和值的子集进行操作,或者根本不执行。因此,如果Map器输出中的重复键数量非常少,那么有时使用组合器可能会适得其反,反而成为一个无用的负担。所以只有在有足够的合并范围时才使用合并器。
引用chuck lam的“hadoop in action”:
“组合器不一定能提高性能。您应该监视作业的行为,以查看合并器输出的记录数是否明显小于输入的记录数。减少必须证明运行合并器的额外执行时间是合理的。”
因此,在您的情况下,可以组合的子集的数量可能在比率上较少,因此运行组合器的开销最终增加了您的执行时间。
阅读更多我的文章在这里。

相关问题