数据岗位面试题更新 2026-08-05

请描述在 Apache Hadoop YARN 中提交应用程序的流程,包括客户端、ResourceManager 和 NodeManager 之间交互的主要步骤。

数据技术原理Apache Hadoop YARN

考察说明

考查对 YARN 应用提交流程的理解,尤其是客户端与 RM 及 NM 的交互机制。

回答思路

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