说明:
(1)Client向ResourceManager提交应用程序,其中包含了ApplicationMaster主程序和启动命令
(2)ApplicationsManager会为应用程序在NodeManager上分配第一个容器,用来运行Application Master
(3)Application Master起来后 要向ApplicationsManager进行注册
(4)Application Master采取轮询的方式 通过RPC请求向ResourceScheduler申请资源 ResourceScheduler返回一个资源列表(那台NodeManager上,多少CPU核 多少内存)
(5)Application Master拿到资源列表后,与对应的NodeManager进行通信,要求启动相应的Task
(6)NodeManager为Task设置相应的环境(即容器,包括CPU和内存等资源),并准备好Task运行所需的jar包,然后将Task启动的命令写在一个脚本中,通过脚本启动Task
(7)各个Task会通过RPC协议向Application Master汇报任务的进度,以便让Application Master掌握Task的运行状态,如果Task运行失败,还需要重试Task
(8)当所有的Task运行完成后,Application Master向 ApplicationsManager申请注销和关闭作业