Application在Yarn中的执行过程(如下图,图来自网络),整个执行过程可以总结为三步:
1. 应用程序提交
2. 启动应用的ApplicationMaster实例
3. ApplicationMaster实例管理应用程序的执行
如上图:Yarn的执行过程细分
1、客户端client程序向ResourceManager提交Application并请求一个ApplicationMaster实例
2、ResourceManager接受并根据自己对集群的掌握情况,决定在某个具体的NodeManager上来启动一个Container,并在这个Container中启动ApplicationMaster(Driver)实例
3、ApplicationMaster向ResourceManager进行注册,说明自己负责当前应用程序的启动,并下载当前应用程序相关的jar包等各种资源,并基于此向RM申请资源内容;
4、在平常的操作过程中,ApplicationMaster根据resource-request协议向ResourceManager发送resource-request请求
5、ResourceManager在接受到ApplicationMaster的资源分配请求后会最化的满足资源请求,并发送资源的元数据信息给ApplicationMaster,当ApplicationMaster获得了资源的元数据后会发指令给机器上的NodeManager,ApplicationMaster通过向NodeManager发送container-launch-specification信息来启动Container, container-launch-specification信息包含了能够让Container和ApplicationMaster交流所需要的资料
6、应用程序的代码在启动的Container中运行,并把运行的进度、状态等信息通过application-specific协议发送给ApplicationMaster,即Container启动后向ApplicationMaster注册;
7、在应用程序运行期间,提交应用的客户端主动和ApplicationMaster交流获得应用的运行状态、进度更新等信息,交流的协议也是application-specific协议
8、一但应用程序执行完成并且所有相关工作也已经完成,ApplicationMaster向ResourceManager取消注册然后关闭,用到所有的Container也归还给系统