Hadoop深入学习:Combiner
来源:互联网 发布:淘宝图片怎么拍摄技巧 编辑:程序博客网 时间:2024/05/17 15:03
1)、Combiner最基本是实现本地key的聚合,对map输出的key排序、value进行迭代。如下所示:
map:(key1,value1) ——> list(key2,value2)
conbine:(key2,list(value2)) ——> list(key2,value2)
reduce:(key2,list(value2)) ——> list(key3,value3)
2)、Combiner还有本地reduce功能(其本质上就是一个reduce):
map:(key1,value1) ——> list(key2,value2)
conbine:(key2,list(value2)) ——> list(key3,value3)
reduce:(key3,list(value3)) ——> list(key4,value4)
3)、如果不用Combiner,南无说有的结果都会在reduce端完成,效率比较低小,并且会占用很多的网络IO;使用Combiner先完成在map端的本地聚合,可以减少网络传输数据量,提高性能。
但是,不要以为在写MapReduce程序时设置了Combiner就认为Combiner一定会起作用,实际情况是这样的吗?答案是否定的。Hadoop文档中也有说明Combiner可能被执行也可能不被执行。那么在什么情况下不执行呢?如果当前集群在很繁忙的情况下job就是设置了也不会执行Combiner。
另外还要注意,Combiner使用的合适的话会提高Job作业的执行数度,但是使用不合适的话,会导致输出的结果不正确。Combiner的输出是Reduce的输入,它绝不会改变最终的计算结果。
Conbiner的适用场景比如说在汇总统计时,就可以使用Conbiner,但是在求平均数的时候就是适合适用了。
最后,我们再来看一下Combiner的执行时机。我们之前已对map端的shuffle做过比较升入的了解,详情请看MapTask详解。那么,Combiner会在map端的那个时期执行呢?实际上,Conbiner函数的执行时机可能会在map的merge操作完成之前,也可能在merge之后执行,这个时机由配置参数min.num.spill.for.combine(该值默认为3),也就是说在map端产生的spill文件最少有min.num.spill.for.combine的时候,Conbiner函数会在merge操作合并最终的本机结果文件之前执行,否则在merge之后执行。通过这种方式,就可以在spill文件很多并且需要做conbine的时候,减少写入本地磁盘的数据量,同样也减少了对磁盘的读写频率,可以起到优化作业的目的。
- Hadoop深入学习:Combiner
- Hadoop深入学习:Combiner
- Hadoop深入学习:Combiner
- Hadoop深入学习:Combiner
- Hadoop学习:Combiner
- hadoop--combiner、partitioner学习
- hadoop学习;Streaming,aggregate;combiner
- Hadoop学习笔记—8.Combiner与自定义Combiner
- hadoop-combiner
- Hadoop学习笔记(三):Combiner funcitons
- 学习Hadoop第十六课(Combiner编程)
- 【hadoop】Hadoop学习笔记(三):Combiner funcitons
- Hadoop的combiner尝试
- Hadoop Combiner 操作
- hadoop中combiner分析
- Hadoop的Combiner
- hadoop setCombinerClass Combiner Reduce
- Hadoop Combiner组件
- poj 2559
- Python2.*与Python3.*共存问题
- 时间过渡制作
- SQLServer 表 索引 在页中的存储
- YS-AndroidStudio不能打开欢迎界面
- Hadoop深入学习:Combiner
- POJ 3435 Sudoku Checker
- POJ 1177-Picture(线段树+离散化+扫描线)
- rman自动控制文件备份的恢复
- angular跨域的ajax--json数据请求
- poj 1979
- 数据结构实验之栈四:括号匹配(栈)
- (hdu3123)GCC(观察数据范围)
- 部分和问题