本文概述:
1、什么是MapReduce?
2、MapReduce特点
3、MapReduce不适合的场景
4、MapReduce架构
5、MapReduce容错
6、MapReduce编程模型
7、Hadoop如何实现MapReduce?
8、hadoop集群xml配置
9、Java API 编程,使用MapReduce开发WordCount
什么是MapReduce?
MapReduce是一种编程模型,其理论来自Google公司发表的三篇论文(
MapReduce,BigTable,GFS
)之一,主要应用于海量数据的并行计算。
MapReduce可以分成
Map
和
Reduce
两部分理解。
1.Map:映射过程,把一组数据按照某种Map函数映射成新的数据。
2.Reduce:归约过程,把若干组映射结果进行汇总并输出。
我们可以利用MapReduce的思想,针对每个省的人口做并行映射,统计出若干个局部结果,再把这些局部结果进行整理和汇总:
1.Map
:
以各个省为单位,多个线程并行读取不同省的人口数据,每一条记录生成一个Key-Value键值对。图中仅仅是简化了的数据。
2.Shuffle
Shuffle这个概念在前文并未提及,它的中文意思是“洗牌”。Shuffle的过程是对数据映射的排序、分组、拷贝。
3.Reduce
执行之前分组的结果,并进行汇总和输出。
需要注意的是,这里描述的Shuffle只是抽象的概念,在实际执行过程中Shuffle被分成了两部分,一部分在Map任务中完成,一部分在Reduce任务中完成
MapReduce特点:
适用于海量数据的离线处理
易于编程
良好的扩展性
高容错性
分布式计算
MapReduce不适合的场景:
实时计算
流失计算
DAG计算
MapReduce架构:
MapReduce1.x跟MapReduce2.x的对比
MapReduce容错
1)MRAppMaster:运行失败,由YARN的RM负责重新启动,默认启动次数2次
2)Map/Reduce Task