标签:hadoop mapreduce combiner 辛星 合并函数
集群上的可用宽带限制了MapReduce作业的数量,因此最重要的一点是尽量避免map任务和reduce任务之间的数据传输。Hadoop允许用户针对map任务的输出指定一个合并函数,有时候我们也称作combiner,它就像mapper和reducer一样。
合并函数的输出作为reduce函数的输入,由于合并函数是一个优化方案,所以Hadoop无法确定针对map任务输出中任一条记录需要调用多少次合并函数。不管我们调用多少次合并函数,reducer的输出结果都应该一致。合并函数的规则限定了可以使用的函数类型。
我们仍然需要reduce函数来处理不同map输出中具有相同键的记录,它能够有效的减少map和reduce之间的数据传输量,在MapReduce作业中使用combiner,是需要谨慎考虑的。
在MapReduce程序中,合并函数是通过reducer接口来定义的,并且我们需要在JobConf中设置combiner类,这里使用的是setCombinerClass这个方法。
标签:hadoop mapreduce combiner 辛星 合并函数
原文地址:http://blog.csdn.net/xinguimeng/article/details/44001507