mapreduce的工作机制

了解mapreduce的工作机制,对编写mapreduce高级编程奠定基础。

一、mapreduce1的最顶层

包含4个独立的实体

客户端:提交mapreduce作业,jobtracker:协调作业的运行,tasktracker:运行作业划分后的任务,分布式文件系统:用来在其他实体间共享作业文件。

二、mapreduce1的过程

1:作业的提交,有客户端提交任务给jobtracker

2:作业的初始化,jobtracker接受到请求后,会进初始化,同时会创建一个表示正在作业的对象,用于封装任务和记录信息,以便跟踪任务的状态和进程。

3:任务的分配,tasktracker 通过发送心跳给jobtracker,如果tasktracker存活的话,jobtracker会为它分配一个任务。

注意:对于map任务,jobtracker会考虑tasktracker的网络位置,并选取一个距离其输入分片文件最近的tasktracker,最理想情况下,任务是数据本地化的。而对于reduce任务不需要考虑数据本地化。

4:任务的执行, 需要完成三步

通过从共享文件系统把作业的jar文件复制到tasktracker所在的文件系统,从而实现作业的jar本地化,同时,tasktracker将应用程序所需要的全部文件从分布式缓存复制到本地磁盘

tasktracker为任务新建一个本地工作目录,并把jar文件中的内容解压到这个文件夹下

tasktracker新建一个TaskRunner实列来运行任务

5:进度和状态:跟踪

6:作业完成,设置完成状态

三、mapreduce2(Yarn)的过程

1、当集群节点超过4000的大型集群,mapreduce1扩展会超过瓶颈。mapreduce2将jobtracker的职能划分为多个独立的实体。

2、mapreduce2将资源管理器和应用管理器划分为两个独立的守护进程,应用管理器和资源管理器协商集群的计算资源

使用mapreduce2的优势:不同的Yarn应用可以在同一个集群上,可以在一个Yarn集群上运行不同版本的mapreduce

3、Yarn的实体

提交mapreduce作业的客户端

Yarn资源管理器,负责协调集群上计算资源的分配

Yarn节点管理器(应用管理器),负责启动和监视集群中机器上的计算容器

MapReduce应用程序master负责协调运行MapReduce作业的任务

分布式文件系统

4 shuffle和排序

mapreduce确保每个reducer的输入都是按键排序的。系统执行排序的过程(map输出作为输入传给reducer)称为shuffle。

猜你喜欢

转载自kayak2015.iteye.com/blog/2247408