yarn的job提交流程
1. 客户端向Resource Manager提交job运行的请求
2. Resource Manager进行检查,没有问题后向客户端返回一个共享资源路径和job_id
3. 客户端将资源放到共享路径下
4. 客户端向Resource Manager反馈,资源已经放入共享路径下,并申请运行mrAppMaster
5. Resource Manager将用户的请求初始化为一个Task,并放入调度队列当中
6. Node Manager领取到Task
7. Resource Manager在这个节点上启动一个Container并启动MRAppmaster
8. MRAppMaster到共享资源路径下下载共享资源(主要是分片和job)
9. MRAppMaster向Resource Manager申请maptask的运行资源
10. 当Node Manager领取到maptask的资源后,Resource Manager向MRAppMaster返回资源节点信息 (返回节点时,有就近原则,优先返回当前的maptask所处理切片的实际节点,数据处处理的时候可以做到数据的本地化处理。如果是多副本的时候就在多副本的任意节点。而reducetask任务在任意不忙的节点上启动)
11. MRAppMaster发送启动脚本到对应节点上,该节点启动一个Container,并启动maptask任务,定时向MRAppMaster汇报自己的运行状态和进度
12. maptask任务到对应的共享资源路径下下载相应的资源,当一个maptask运行成功后,MRAppMaster就会向Resource Manager申请reducetask的运行资源,并启动reducetask
13. reducetask从map中拉取数据,当所有的maptask运行结束后,启动reduce任务进行计算
14. 当所有的任务全部结束后,MRAppMaster向Resource Manager申请注销自己并释放资源