Hadoop之MapReduce思想,流程,组件
Hadoop之MapReduce思想
MapReduce
是Hadoop框架的一个并行计算框架
,将一个计算任务拆分成两个阶段:Map和Reduce
MapReduce擅长做大数据处理,MapReduce的思想就是`分而治之
.- Map负责**”分“**,即把庞大且复杂的任务分解成若干个”简单的任务“来处理,简单的任务包含三层
-
是对数据或者计算模型相对于原任务要大大缩小
-
就近计算原则,就是任务会被分配到存放所需数据的节点上进行计算
-
这些小任务不止一个且并行计算,而且彼此间没有依赖关系
-
Reducer负责对Map的计算结果进行汇总
首先来说 什么是YARN
Yarn作为一个资源调度平台,有一个全局的管理者叫做ResourceManager,ResourceManager负责对集群的整体计算及资源做统筹规划,有各个节点的管理者叫做NodeManager,负责向ResourceManager报告其计算资源的使用情况,在NodeManger中有一个MRAppMaster管理这里当前运行的MRApp,其任务是协调来自ResourceManager的资源,并与NodeManager一起执行和监视任务。
ResourceManager
:负责对集群的整体计算及资源做统筹规划
NodeManager
:管理主机上的计算组员,负责向RM 汇报自身的状态信息
MRAppMaster
:计算任务的Master,负责申请计算资源,协调计算任务
YARN Child
:负责做实际计算任务
Container:
计算资源的抽象单元
Hadoop的序列化(Bean对象)
开发不是一成不变的,Hadoop中提供了集中数据类型的序列化,但是在实际的开发中往往是不够用的,需要自定义序列化对象
在Java中使用的序列化技术是内置的Serializable
但是Hadoop并没有采取这种序列化方式,使用了自己实现的一套序列化机制,叫做Writable
需要进行序列化后才能在网络中进行传输
编码(序列化)----解码(反序列化)
一个Bean要先实现Writable接口,里面有俩个方法
write 序列化编码方法
readFields 序列化解码方法
mapreduce流程
1 首先是通过程序员所编写的MR程序通过命令行本地提交或者IDE远程提交
2 一个MR程序就是一个Job,Job信息会给ResourceManger (负责对集群的整体计算及资源做统筹规划),向ResourceManger 注册信息
3 在注册通过后,Job会拷贝相关的资源信息(从HDFS中)
4 紧接着会向ResourceManger 提交完整的Job信息(包括资源信息)
5a ResourceManger 会通过提交的Job信息,计算出Job所需的资源,为Job分配Container(计算资源的抽象单元)资源
5b 计算资源会分发给不同节点上的NodeManger(管理主机上的计算组员,负责向ResourceManger 汇报自身的状态信息),NodeManager会创建一个MRAppMaster(计算任务的Master,负责申请计算资源,协调计算任务)
6 MRAppMaster初始化Job