欢迎访问 生活随笔!

生活随笔

当前位置: 首页 >

Hadoop学习之Combiner

发布时间:2025/3/15 30 豆豆
生活随笔 收集整理的这篇文章主要介绍了 Hadoop学习之Combiner 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

  在Hadoop中,有一种处理过程叫Combiner,与Mapper和Reducer在处于同等地位,但其执行的时间介于Mapper和Reducer之间,其实就是Mapper和Reducer的中间处理过程,Mapper的输出是Combiner的输入,Combiner的输出是Reducer的输入。

例如获取历年的最高温度例子,以书中所说的1950年为例,在两个不同分区上的Mapper计算获得的结果分别如下:

第一个Mapper结果:(1950, [0, 10, 20])

第二个Mapper结果:(1950, [25, 15])

 

如果不考虑Combiner,按照正常思路,这两个Mapper的结果将直接输入到Reducer中处理,如下所示:

MaxTemperature:(1950, [0, 10, 20, 25, 15])

最终获取的结果是25。

如果考虑Combiner,按照正常思路,这两个Mapper的结果将分别输入到两个不同的Combiner中处理,获得的结果分别如下所示:

第一个Combiner结果:(1950, [20])

第二个Combiner结果:(1950, [25])

然后这两个Combiner的结果会输出到Reducer中处理,如下所示

MaxTemperature:(1950, [20, 25])

最终获取的结果是25。

由上可知:这两种方法的结果是一致的,使用Combiner最大的好处是节省网络传输的数据,这对于提高整体的效率是非常有帮助的。

 

但是,并非任何时候都可以使用Combiner处理机制,例如不是求历年的最高温度,而是求平均温度,则会有另一种结果。同样,过程如下,

如果不考虑Combiner,按照正常思路,这两个Mapper的结果将直接输入到Reducer中处理,如下所示:

AvgTemperature:(1950, [0, 10, 20, 25, 15])

最终获取的结果是14。

如果考虑Combiner,按照正常思路,这两个Mapper的结果将分别输入到两个不同的Combiner中处理,获得的结果分别如下所示:

第一个Combiner结果:(1950, [10])

第二个Combiner结果:(1950, [20])

然后这两个Combiner的结果会输出到Reducer中处理,如下所示

AvgTemperature:(1950, [10, 20])

最终获取的结果是15。

由上可知:这两种方法的结果是不一致的,所以在使用Combiner时,一定三思而后行,仔细思量其是否适合,否则可能造成不必要的麻烦。

 

 

转载于:https://www.cnblogs.com/baolebei/p/3836696.html

总结

以上是生活随笔为你收集整理的Hadoop学习之Combiner的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。