先来张图:
工作机制详解:
1 MR 程序提交到客户端所在的节点。
2 YarnRunner向RM申请一个Application
3 RM将该应用程序的资源路径返回给YarnRunner
4 该程序将运行所需要资源提交到HDFS上。
5 程序资源提交完毕后,申请运行mrAppMaster
6 RM 将用户的请求初始化一个Task
7 其中一个NodeManager领取到Task任务
8 该NM 创建一个Container,并产生一个MRAppmaster
9 Container从HDFS上拷贝资源到本地
10 MRAppmaster向RM申请运行MapTask资源
11 RM将运行MapTask任务分配 给另外两个NM,另外两个分别领取任务并创建容器
12 MR 向两个接受到任务的NM发送程序启动脚本。这两个NM分别启动MapTask,MapTask对数据分区排序
13 MrAppMaster 等待所有的MapTask运行完毕后,向RM申请容器运行RedyceTask
14ReduceTask向MapTask获取相应分区的数据
15 程序运行完毕后,MR会向RM申请注销自己