当 jobclient 向 Yarn 提交一个应用程序后,Yarn 将分两个阶段运行这个应用程序:
-
一是启动 AM(ApplicationMaster);
-
二是由 AM 创建应用程序,为它申请资源,监控运行直到结束。
具体步骤如下:
- 用户向 Yarn 提交一个应用程序,并指定 AM 程序、启动 AM 的命令、用户程序。
- RM(ResourceManager)为这个应用程序分配第一个 Container,并与之对应的 NM(NodeManager)通讯,要求它在这个 Container 中启动应用程序 AM。
- AM 向 RM 注册,然后拆分为内部各个子任务,为各个内部任务申请资源,并监控这些任务的运行,直到结束。
- AM 采用轮询的方式向 RM 申请和领取资源。
- RM 为 AM 分配资源,以 Container 形式返回。
- AM 申请到资源后,便与之对应的 NM 通讯,要求 NM 启动任务。
- NM 为任务设置好运行环境,将任务启动命令写到一个脚本中,并通过运行这个脚本启动任务。
- 各个任务向 AM 汇报自己的状态和进度,以便当任务失败时可以重启任务。
- 应用程序完成后,AM 向 RM 注销并关闭自己。
我们下期见,拜拜!