0%
Yarn工作机制
- MapReduce运行job,MapReduce程序提交到客户端所在的节点,job.waitForCompletion创建YarnRunner
- 向ResourceManager申请一个Application,ResourceManager会生成一个Application的资源提交路径hdfs://../staging以及application_id
- 将job运行所需要的资源提交到该路径下的application_id文件中(资源包含Job.split、Job.xml、执行的jar程序)
- 资源提交完毕之后向ResourceManager申请运行mrAppMaster
- ResourceManager将任务放入队列中,NodeManager从队列中取任务,并创建Container,Container创建完毕启动mrAppMaster
- Container从HDFS下载job资源到本地
- mrAppMaster用来创建一系列的监控进程来跟踪作业的进度,同时获取输入分片,为每一个分片创建一个Map task和相应的reduce task
- 向ResourceManager申请运行MapTask容器,将任务放到队列中,Nodemanager从队列中取并创建容器
- mrAppMaster向取到MapTask任务的NodeManager节点发送程序启动脚本
- MapTask执行结束之后,mrAppMaster向ResourceManager申请运行ReduceTask容器,将任务放到队列中,Nodemanager从队列中取并创建容器,运行ReduceTask程序
- Reduce向Map获取相应分区数据
- 运行结束之后,mrAppMaster向ResourceManager发起注销