Hadoop MapReduce
MapReduce是一种编程模型,用于大规模数据集的并行运算。概念"Map(映射)“和"Reduce(归约)”,是它们的主要思想,都是从函数式编程语言(适合在网络中传递方法)里借来的,还有从矢量编程语言里借来的特性。
Hadoop中MapReduce计算框架充分的利用了存储节点所在物理主机的内存
、CPU
、网络
、少许磁盘
完成对大数据集的分布式计算。框架一般会在所有的DataNode所在的物理主机上启动NodeManager服务,NodeManager服务用于管理该服务运行的物理节点的计算资源。除此之外系统一般会启动一个ResourceManager用于统筹整个计算过程中的资源调度问题。
MapReduce计算核心思想是将一个大的计算任务,拆分成若干个小任务,每个小任务独立运行,并且得到计算结果,一般是将计算结果存储在本地。当第一批次任务执行结束,系统会启动第二批次任务,第二批次的任务作用是将第一批次的计算临时结果通过网路下载汇集到本地,然后在本地执行最终的汇总计算。
可以理解为当使用MapReduce执行大数据统计分析时,系统会将分析数据进行切分,我们将切分信息 称为任务切片(实质是对分析目标数据的一种逻辑区间映射)。任务在执行的时候会更具任务切片的数目决定Map阶段计算的并行度。也就意味着Map阶段完成的是数据的局部计算。一个Map任务就代表着一个计算资源。当所有的Map任务都完成了对应区间的数据的局部计算后,Map任务会将计算结果存储在本地磁盘上。紧接着系统会按照系统预设的汇总并行度启动多个Reduce任务对Map阶段计算结果进行汇总,并且将结果内容输出到HDFS、MySQL、NoSQL中。
Map Reduce 2 架构图
ResourceManager
:统筹管理计算资源
NodeManager
:启动计算资源(Container)例如:MRAppMaster、YarnChild同时NM连接RM汇报自身一些资源占用信息。
MRAppMaster
:应用的Master负责任务计算过程中的任务监控、故障转移,每个Job只有一个。
YARNChild
:表示MapTask
、ReduceTask
的总称,表示一个计算进程。
Yarn架构图
构建MR运行环境
- etc/hadoop/mapred-site.xml
[root@CentOS ~]# cp /usr/hadoop-2.6.0/etc/hadoop/mapred-site.xml.template /usr/hadoop-2.6.0/etc/hadoop/mapred-site.xml
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
- etc/hadoop/yarn-site.xml
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>CentOS</value>
</property>
- 启动YARN
[root@CentOS ~]# start-yarn.sh
[root@CentOS ~]# jps
5250 Jps
4962 ResourceManager
5043 NodeManager
3075 DataNode
3219 SecondaryNameNode
2959 NameNode