在 Apache YARN 架构中,客户端(Client)在作业运行期间获取作业执行进度和状态的过程是一个分层查询、基于轮询(Polling)的机制。 为了高效且不过度增加系统负载,YARN 将“整体状态”和“详细进度”的管理分离开来。具体来说,客户端主要与 ResourceManager (RM) 和 ApplicationMaster (AM) 两个组件进行交互。 以下是详细的获取流程和内部机制: 1. 核心交互流程(客户端视角) 第一阶段:向 ResourceManager (RM) 查询宏观状态 1. 获取 ApplicationId:客户端在提交作业时,会从 RM 获得一个全局唯一的 。 2. 轮询 RM:在作业刚提交(处于 , , 状态)或运行期间,客户端会通过 RPC 接口()定期向 RM 发送状态查询请求(如 )。 3. 获取 ApplicationReport:RM 会返回一个包含作业宏观信息的报告,主要包括: YARN 状态 (YarnApplicationState):如 (已接受等待资源)、(正在运行)、、、。 聚合进度 (Progress):一个从 0....