在本节中,我们着重学习MapReduce编程模型中的Combiner组件。
每一个map都可能会产生大量的本地输出,Combiner的作用就是对map端的输出先做一次合并,以减少在map和reduce节点之间的数据传输量,以提高网络IO性能,是MapReduce的一种优化手段之一。
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技术内幕:深入解析...为了深入学习Hadoop MapReduce,读者需要获取这本书,并结合实际编程练习来加深理解和应用。对于想要从事大数据处理或已经在该领域工作的专业人士,这本书将是一份宝贵的参考资料。
《Hadoop技术内幕:深入解析MapReduce架构设计与实现原理》这本书是理解Hadoop核心组件MapReduce的关键资源。MapReduce是Google提出...对于想要深入学习Hadoop和大数据处理的人来说,这本书是一份不可多得的参考资料。
《Hadoop技术内幕:深入解析MapReduce架构设计与实现原理》是关于大数据处理领域的一本经典著作,专注于探讨Hadoop的核心组件——MapReduce。MapReduce是Google提出的一种分布式计算模型,被广泛应用于海量数据的...
《Hadoop技术内幕:深入解析MapReduce架构设计与实现原理》是董西成撰写的一本专著,专注于探讨Hadoop的核心组件MapReduce的内部机制。这本书涵盖了从基础概念到高级应用,旨在帮助读者深入理解这一分布式计算框架。...
2. **Hadoop源码**:在Hadoop的源码中,开发者可以深入理解其内部工作原理,学习如何定制和优化Hadoop。源码包含各个模块,如HDFS的NameNode、DataNode,以及MapReduce的JobTracker、TaskTracker等。 3. **开发环境...
这本书是Hadoop领域的一本权威指南,旨在为读者提供全面深入的Hadoop知识体系。它不仅涵盖了Hadoop的核心概念和技术细节,还提供了丰富的实践案例和应用场景,适合不同层次的学习者和从业者阅读。 #### 三、主要...
超人学院所发布的《Hadoop面试葵花宝典》不仅是一本面试题集,更是Hadoop学习者和求职者的必备宝典。本书不仅提供了大量实战题,还对知识点进行了深入解析,尤其适合那些希望在大数据领域进一步发展的人才。 1. ...
- 在实际项目中,你可能已经研究过如何优化Hadoop作业的性能,包括调整Block大小、设置合适的Map和Reduce任务数量、使用Combiner减少网络传输等。 6. **Hadoop的扩展性**: - YARN(Yet Another Resource ...
在2015年的夏季,通过对《Hadoop权威指南》的深入学习,我们可以理解MapReduce的基本工作原理及其编程模型。 **MapReduce的基本概念** 1. **Map阶段**: 在Map阶段,输入数据被分割成多个块,并在集群中的多台机器...
通过学习这些章节的源代码,开发者可以更好地理解Hadoop的工作原理,并在实际项目中灵活运用这些技术。此外,实践这些示例代码也是提升Hadoop技能的关键步骤,能够加深对分布式计算的理解,为大数据处理领域打下坚实...
Hadoop 是一个开源的分布式计算...通过这份中文版的官方文档,读者不仅可以掌握Hadoop的基本概念和操作,还能深入了解分布式计算的原理和实践,对于想要从事大数据处理和分析的人员来说,是一份非常宝贵的参考资料。
通过研究Hadoop的源代码,开发者和数据工程师可以深入学习其内部机制,优化性能,甚至开发新的功能。 首先,我们来了解一下Hadoop的核心组件: 1. **HDFS(Hadoop Distributed File System)**:HDFS是Hadoop的...
深入学习Hadoop源码,我们可以探讨以下几个关键知识点: 1. **Hadoop架构**:理解Hadoop的分布式文件系统(HDFS)和MapReduce计算模型,以及YARN资源调度器的工作原理。 2. **HDFS**:研究HDFS的数据块、副本策略...
《Hadoop权威指南中文版(第二版)》与《Hadoop in Action》及《Pro Hadoop》这三本书是深入理解和掌握Hadoop生态系统的关键资源。Hadoop作为一个分布式计算框架,其核心是解决大规模数据处理的问题,它允许在廉价...
5. **Hadoop MapReduce编程模型**:深入理解MapReduce的生命周期,包括map阶段、shuffle阶段和reduce阶段,以及Combiner和Partitioner的作用。 6. **Hadoop数据流**:学习数据是如何从输入源经过map任务,shuffle...
【标题】:Hadoop技术总结 【描述】:Hadoop是一种开源框架,专门设计用于处理和存储大量数据,尤其适合初次接触大数据领域的学习者。...通过不断学习和实践,你可以深入理解其工作原理,从而更好地应用在实际项目中。
掌握了这些基础知识之后,将进一步深入学习Hadoop的高级特性,探索如何利用Hadoop解决实际业务中的大数据问题。希望这些内容能够帮助大家更好地理解和掌握Hadoop,为大数据处理打下坚实的基础。
【Hadoop学习总结(面试必备)】 Hadoop作为大数据处理的核心框架,因其分布式存储和计算的能力,成为业界处理海量数据的首选工具。...通过深入学习和实践,你将能够有效地解决大数据场景下的各种问题。
6. **MapReduce编程基础**:深入剖析MapReduce的工作流程,通过WordCount案例理解编程方法,讲解Mapper输入、Shuffle过程、Combiner的使用,并进一步通过SVG案例深化理解。 7. **Hadoop高级编程**:涵盖计数器、...