mr中shuff过程分析

一、job提交过程
申请提交job的前期准备工作:

1)客户端向resourcemanager提交job请求

2)rm 向客户端返回一个 job_id 以及 共享资源路径(在hdfs下的 tmp)

3)客户端将共享数据 放在 共享资源路径下(job.jar,job.spplit、job.xml))

4) 客户端向rm返回资源放置成功的响应, 真正的提交应用程序

mrappmaster的开启以及准备阶段:

5)rm向客户端返回一个节点 运行mrappmaster(便于客户端检测任务的进程)

6)rm到对应的节点启动mrappmaster(先启动container(scheduler)在启动mrappmaster)

7)mrappmaster 将job初始化(生成application_id) 并且生成一个当前的job工作簿 记录maptask|reducsk的进程和状态

8)mrappmaster到共享资源下  下载共享资源到本地

9)mrappmaster向rm申请maptask 和 reducetask运行资源, 优先maptask

10)rm向mrappmaster返回对应的资源节点  如:maptask,数据本地化 01 、rducetask 随机 03

mrappmaster开始启动 maptsk(优先) 和 reducetask

maptask:
11)mrappmaster到对应的节点出启动maptask,前提是scheduler以及分配了container

12)mrappmaster到共享资源下,下载共享资源到本地

13)开始运行maptask

14)maptask在运行期间,向mrappmaster汇报自己的进度和状态

15) 当mrappmaster获取到了“一个节点”上的所有的maptask任务执行完成, 启动reducetask

reducetask:
16)mrappmaster到对应的节点启动reducetask,先由scheduler分配container

17)reducetask到共享资源路径下,下载共享资源到本地

18)所有的maptask完成, 且 fetch 也完成, 开始真正执行reducetask中的reduce方法

19)reducetask在执行期间向mrappmaster汇报自己的进度和状态

资源的释放:

20)当maptask |  reducetask运行完成, mrappmaster到对相应的节点进行资源回收

21)所有的maptask 和 reducetask 运行结束 , mrappmaster向rm注销自己, 并释放资源

二、各个角色的作用:
resourcemanager:
1)接受客户端的请求
2)为job进行资源分配
3)启动mrappmaster
4)监控mrappmaster的运行进度和状态
5)接受nodemanager的心跳报告
nodemager 向 resourcemanager 发送心跳 资源状况
6)监控每一个nodemanager上的资源状况

nodemanager:
	1)接受rm的命令
	2)接受mrappmaster的命令
	3)真正的提供资源
	4)向rm发送心跳报告 自己的资源状况


mrappmaster:
	1)帮助maptask|reducetask 申请运行的资源
	2)启动 maptask|reducetask
	3)监控 或 跟踪  maptask|reducetask的运行进度和状态  失败重启
	4)销毁maptask  reducetask的资源----:| -------------:|:-------------|