请描述在 Apache Hadoop YARN 中提交应用程序的流程,包括客户端、ResourceManager 和 NodeManager 之间交互的主要步骤。
考察说明
考查对 YARN 应用提交流程的理解,尤其是客户端与 RM 及 NM 的交互机制。
回答思路
- 【回答框架 1】YARN 应用提交始于客户端创建 ApplicationClientProtocol 请求,向 ResourceManager(RM)申请一个 ApplicationId,并提交 ApplicationSubmissionContext,其中包含应用所需的资源、命令、环境变量等。
- 【回答框架 2】RM 收到请求后,会选择一个 NodeManager(NM)启动 ApplicationMaster(AM)。AM 启动后,向 RM 注册,并通过心跳汇报自身状态和资源需求。
- 【回答框架 3】AM 根据应用需求向 RM 申请容器,RM 分配容器资源并通知对应 NM 启动容器。AM 可运行任务或进一步调度子任务。
- 【回答框架 4】任务完成后,AM 向 RM 注销并释放资源,RM 更新应用状态,客户端轮询或监听 RM 以获取最终完成状态。
- 【回答框架 5】整体流程核心是三步:提交、调度与执行、完成;客户端只与 RM 初始交互,后续执行由 AM 主导,实现资源管理与任务控制的解耦。
- 【关键点 1】YARN 采用 ResourceManager 统一管理资源,ApplicationMaster 负责单个应用的执行和调度。
- 【关键点 2】提交涉及创建 ApplicationId、提交上下文和启动 AM,RM 只负责资源决策。
- 【关键点 3】AM 与 RM 通过心跳交互,AM 申请、释放容器,NM 负责实际启动和监控容器。
- 【关键点 4】客户端通过 ApplicationClientProtocol 轮询或获取应用最终状态。
- 【易错点 1】混淆客户端与 RM 及 AM 的职责,误以为客户端直接与 NM 交互。
- 【易错点 2】忽略 AM 启动阶段,只提提交后直接运行任务。
- 【易错点 3】认为 RM 直接启动任务容器,实际 RM 仅通知 NM,容器由 NM 启动和管理。