1. YARN 的 ResourceManager/NodeManager/ApplicationMaster 架构如何协作,Capacity Scheduler 与 Fair Scheduler 的资源分配策略有何差异
YARN 中 ResourceManager、NodeManager、ApplicationMaster 三大组件各司其职并如何协作完成一个应用的资源申请与调度;Capacity Scheduler 与 Fair Scheduler 的资源分配逻辑有何本质区别?
- YARN 主从架构与组件职责划分
- 应用提交、资源申请、容器分配的生命周期
- 容量调度器与公平调度器的资源分配策略差异
YARN 采用两层调度架构。ResourceManager(RM)是全局资源主控,负责集群资源统一管理、调度与心跳仲裁;NodeManager(NM)是每个节点上的从属进程,负责启动/监控容器并向 RM 上报本节点资源;ApplicationMaster(AM)是每个应用专属的调度协调者,负责向 RM 申请资源、把任务切分并调度到对应 NM 的容器中执行,并负责任务失败重试。协作流程为:客户端提交应用给 RM,RM 分配一个 AM 容器,AM 启动后根据任务图向 RM 的 Scheduler 异步申请资源(Container),RM 返回容器所在节点,AM 再通知对应 NM 启动容器运行任务,任务完成或失败后 AM 向 RM 注销。Capacity Scheduler 将集群按队列划分并保证每个队列 "容量下限"(minimum capacity),资源充足时可弹性占用超额(elasticity),队列内部按 FIFO 或优先级排队,约束是 "硬性容量保证 + 排队等待";Fair Scheduler 则按活跃任务数在队列间公平共享资源(类似多进程 CPU 公平调度),新任务会抢占以获得公平份额,更适合多租户共享场景。
记住 RM 是大脑、NM 是执行单元、AM 是应用的中间人,调度是 "AM 申请 - RM 分配 - NM 执行" 的闭环。容量与公平的本质区别在于:容量调度保证最低配额、超额弹性、不抢占;公平调度追求动态均分、可抢占。面试时用 "银行额度 vs 多人分蛋糕" 类比即可。