当用户向 Yarn 提交一个应用程序后,Yarn 将分两个阶段运行该应用程序:
①启动 ApplicationMaster
②由 ApplicationMaster 创建应用程序,为它申请资源,并监控其整个运行过程,知道运行完成
具体步骤如下:
①用户向 Yarn 中提交应用程序,其中包括 ApplicationMaster 应用程序、启动 ApplicationMaster 的命令、用户程序等
②ResourceManager 为该应用程序分配第一个 Container,并与对应的 NodeManager 通信,要求它在这个 Container 中启动应用程序的 ApplicationMaster
③ApplicationMaster 首先向 ResourceManager 注册,用户可以直接通过 ResourceManager 查看应用运行状态,然后 ResourceManager 将会为各个任务申请资源,并监控任务的运行状态,直到运行结束,即重复步骤 4-7
④ApplicationMaster 采用轮询的方式通过 RPC 协议向 ResourceManager 申请和领取资源
⑤ApplicationMaster 申请到资源后,便与对应的 NodeManager 通信,要求它启动任务
⑥NodeManager 为任务设置好运行环境后,将任务启动命令写道一个脚本中,并通过运行该脚本启动任务
⑦各个任务通过某个 RPC 协议向 ApplicationMaster 汇报自己的状态和进度,以便让 ApplicationMaster 随时掌握各个任务的运行状态,从而可以在任务运行失败时从新启动任务
⑧应用程序运行完成后,ApplicationMaster 向 ResouceManager 注销并关闭自己
如下为示意图