分析时间: 2026-07-05
数据来源: Apache JIRA (issues.apache.org)
检索范围: YARN 项目, 2022年1月 ~ 2026年7月
覆盖: 4.5 年跨度
一、调研概览
| 维度 | 说明 |
| 检索范围 | Apache JIRA,关键词覆盖 scheduling / resource allocation / queue / preemption / placement / container / capacity scheduler / fair scheduler |
| 时间窗口 | 2022年1月 — 2026年7月(4年半) |
| 总检索命中 | 约 300+ 条结果,去重去无关后约 80+ 个相关 Issue |
| 覆盖子领域 | 性能优化 |
按年份分布
| 年份 | Issue 数 | 已修复 | 修复率 | 特征 |
| 2022 | ~20 | ~12 | ~60% | 基础加固:AQCv2、deadlock修复、预取优化 |
| 2023 | ~18 | ~8 | ~44% | 并发调度启动、抢占策略、DRF修复 |
| 2024 | ~25 | ~10 | ~40% | 性能优化高峰、Global Scheduler加速、过量分配修复 |
| 2025 | ~15 | ~8 | ~53% | CS UI 建设、Rich Placement、调度正确性 |
| 2026 | ~10 | ~2 | ~20% | CS UI 改进、动态请求处理、调度器饥饿修复 |
二、核心主题深度分析
🥇 主题 1:性能优化(最核心方向)
这是用户最关注的方向,也是社区投入最大的领域。
| JIRA ID | 年份 | 标题 | 状态 | 修复版本 | 优化点 |
| YARN-11968 | 2026 | FairOrderingPolicy: 避免重复扫描无 pending 请求的 app | Open | — | 减少无意义的扫描 |
| YARN-11752 | 2025 | Global Scheduler: 改进容器分配时间 | Resolved | 3.5.0 | 核心调度路径加速 |
| YARN-11798 | 2025 | 预检查请求分离,避免冗余节点检查 | Resolved | 3.5.0 | 减少预检查计算量 |
| YARN-11750 | 2024 | 并行初始化队列 | Open | — | 启动加速 |
| YARN-11749 | 2024 | 跳过 RegularContainerAllocator 中不必要的 node-askingRequest 匹配 | Open | — | 减少匹配计算 |
| YARN-11660 | 2024 | SingleConstraintAppPlacementAllocator 性能回退 | Resolved | 3.4.1 | 回归修复 |
| YARN-11643 | 2024 | 跳过 Multi Node Placement 中不必要的预检查 | Open | — | 减少预检查 |
| YARN-11686 | 2024 | 异步调度时修正遍历索引 | Open | — | 异步调度正确性 |
| YARN-11693 | 2024 | 重构 Container 调度器(umbrella) | Open | — | 架构级重构 |
| YARN-11440 | 2023 | 创建并发 Leaf Queue | Open | — | 并发调度基础 |
| YARN-11411 | 2023 | [Umbrella] 构建并发 YARN 调度器 | In Progress | — | 架构级改造 |
| YARN-11412 | 2023 | 创建并发 Users Manager | In Progress | — | 并发调度基础 |
| YARN-11656 | 2024 | RMStateStore 事件队列阻塞 | Patch Available | — | 状态存储性能 |
| YARN-11216 | 2022 | 避免不必要的 ConfigurationProperties 重建 | Patch Available | — | 配置加载优化 |
| YARN-11202 | 2022 | 优化 ClientRMService.getApplications | Resolved | — | RPC 优化 |
性能优化演进路线
2022: 基础优化
├── YARN-11216 — 配置加载减少重建
└── YARN-11202 — getApplications RPC 优化
2023: 并发调度启动
├── YARN-11411 — 并发调度器 umbrella ★
├── YARN-11440 — 并发 Leaf Queue
└── YARN-11412 — 并发 Users Manager
2024: 调度路径加速(高峰年)
├── YARN-11749 — 跳过不必要的 node-askingRequest 匹配
├── YARN-11643 — 跳过不必要的预检查
├── YARN-11660 — 恢复 SingleConstraint 性能 (3.4.1)
├── YARN-11686 — 异步调度索引修正
├── YARN-11693 — Container 调度器重构
└── YARN-11656 — RMStateStore 事件队列
2025: 全局调度器加速
├── YARN-11752 — 容器分配时间改进 (3.5.0) ★
└── YARN-11798 — 预检查分离 (3.5.0) ★
2026: 细粒度优化
└── YARN-11968 — 避免扫描无 pending 请求的 app
关键发现:性能优化从 2022 的基础层面(配置加载、RPC)逐步深入到 2024-2025 的核心调度路径(分配、匹配、预检查),2025 年的 YARN-11752 和 YARN-11798 在 3.5.0 中已落地。但并发调度器(YARN-11411)3.5 年后仍在 In Progress。
🥈 主题 2:并发调度器建设(架构级改造)
这是 YARN 调度器领域最重大的架构变更。
| JIRA ID | 标题 | 状态 | 持续 | 说明 |
| YARN-11411 | [Umbrella] 构建并发 YARN 调度器 | In Progress | 3.5年+ | 顶层架构设计 |
| YARN-11440 | 创建并发 Leaf Queue | Open | 3.5年+ | 核心数据结构 |
| YARN-11412 | 创建并发 Users Manager | In Progress | 3.5年+ | 用户管理并发化 |
| YARN-11693 | 重构 Container 调度器 | Open | 2年+ | 容器分配重构 |
分析:并发调度器是解决大集群调度延迟的根本方案。当前 YARN 调度器使用全局写锁,在数千节点、数万容器场景下成为瓶颈。但此项目已推进 3.5 年尚未完成,表明复杂度极高。
🥉 主题 3:抢占(Preemption)优化
| JIRA ID | 年份 | 标题 | 状态 | 说明 |
| YARN-11073 | 2022 | 避免 tiny queue 不必要的抢占 | Resolved 3.4.0 | ✅ 小队列频繁抢占修复 |
| YARN-11171 | 2022 | 高优先级任务饥饿,低优先级未被抢占 | Open | 优先级抢占失效 |
| YARN-11194 | 2022 | FairShare 抢占不强制 sibling 间公平 | Open | FS 公平性 |
| YARN-11428 | 2023 | FS: 期望的抢占可能不执行 | Open | 抢占执行可靠性 |
| YARN-11624 | 2023 | 添加配置禁用 AM 抢占 | Open | 运维灵活性 |
| YARN-11623 | 2023 | FS: 文档化 AM 抢占变更 | Open | 文档 |
| YARN-11907 | 2025 | FairSharePolicy: compareDemand() 导致队列饥饿 | Patch Available | ⚠️ 关键饥饿问题 |
| YARN-11573 | 2023 | 配置项:优先选择无 reserved 容器的节点 | Resolved | 调度偏好 |
分析:抢占是 YARN 调度中最复杂也最易出问题的领域。2022 修复了 tiny queue 频繁抢占问题(YARN-11073),但 Fair Scheduler 的多个抢占相关 Bug 从 2022-2023 年提交后一直 Open,最严重的是 YARN-11907(compareDemand 导致队列饥饿),已有补丁但未合入。
主题 4:Capacity Scheduler 增强
| JIRA ID | 年份 | 标题 | 状态 | 修复版本 |
| YARN-11573 | 2023 | 优先选择无 reserved 容器的节点 | Resolved | — |
| YARN-11503 | 2023 | Mutation API 添加队列后停止分配 | Open | — |
| YARN-11507 | 2023 | CSQueue 属性受 DominantResourceCalculator 影响 | Open | — |
| YARN-11640 | 2024 | CS 支持 FairOrderingPolicy 的应用优先级 | Open | — |
| YARN-11648 | 2024 | CS 在资源释放时未激活应用 | Open | — |
| YARN-11728 | 2024 | Multi-node placement 启用时调度挂起 | Open | — |
| YARN-11766 | 2025 | 实现 DELAYED_OR 运算符(Rich Placement) | Open | — |
| YARN-11781 | 2025 | 实现动态请求处理 | Open | — |
| YARN-11809 | 2025 | CS 支持应用 backoff 机制 | Open | — |
分析:CS 相关的 Issue 修复率较低(多数 Open),表明 CS 功能迭代速度较慢。2025 年的动态请求处理(YARN-11781)和 backoff 机制(YARN-11809)值得关注。
主题 5:Fair Scheduler 专项
| JIRA ID | 年份 | 标题 | 优先级 | 状态 |
| YARN-11482 | 2023 | 修复 DRF 比较器 Bug | Major | Resolved |
| YARN-11615 | 2023 | FS 比较方法违反契约 | Major | Open |
| YARN-11697 | 2024 | FS removeApplicationAttempt 竞态条件 | Major | Open |
| YARN-11720 | 2024 | FS + NodeLabels 负指标 | Major | Open |
| YARN-11907 | 2025 | FairSharePolicy.compareDemand() 导致队列饥饿 | Major | Patch Available |
| YARN-11966 | 2026 | PartitionQueueMetrics already exists! | Critical | Patch Available |
| YARN-11968 | 2026 | FairOrderingPolicy 避免重复扫描无 pending 请求 app | Major | Open |
分析:FS 在 2023-2024 年修复了 DRF 比较器(YARN-11482)等基础问题,但仍有多个 Open Issue。2026 年的 YARN-11966(Critical)表明 FS 的 metrics 系统存在严重设计问题。
主题 6:Capacity Scheduler UI(2025-2026 重大工程)
| JIRA ID | 年份 | 标题 | 状态 | 说明 |
| YARN-11885 | 2025 | [Umbrella] YARN Capacity Scheduler UI | Resolved 3.5.0 | ✅ Phase 1 |
| YARN-11886~11890 | 2025 | CS UI sub-tasks(serve/integrate) | Resolved | 7 个子任务 |
| YARN-11944 | 2026 | [Umbrella] YARN Capacity Scheduler UI Improvement | Open | Phase 2 |
| YARN-11945~11951 | 2026 | CS UI 改进 sub-tasks(Apps/Nodes/Config/Logs 视图迁移) | Open | 7 个子任务 |
分析:CS UI 是 2025-2026 年 YARN 社区的重大工程投入。Phase 1(YARN-11885)已在 3.5.0 落地,Phase 2(YARN-11944)正在推进中,将 Apps/Nodes/Config/Logs 视图全面迁移到新 UI。
主题 7:调度正确性(Bug 修复)
| JIRA ID | 年份 | 标题 | 优先级 | 状态 | 修复版本 |
| YARN-11191 | 2022 | Global Scheduler refreshQueue deadlock | Major | Resolved | — |
| YARN-11501 | 2023 | RM deadlock | Critical | Resolved | — |
| YARN-11560 | 2023 | Multi-node + async 调度 NPE | Blocker | Resolved | — |
| YARN-11639 | 2024 | PriorityUtilizationQueueOrderingPolicy 并发修改异常 | Major | Resolved | — |
| YARN-11684 | 2024 | PriorityQueueComparator 违反契约 | Major | Resolved | — |
| YARN-11702 | 2024 | 过量分配容器(CS + FS) | Critical | Resolved | 3.5.0 |
| YARN-11785 | 2025 | QueueMetrics HashMap 竞态条件 | Major | Resolved | — |
| YARN-11834 | 2025 | App 因竞态条件卡在 ACCEPTED 状态 | Major | Resolved | 3.5.0 |
| YARN-11843 | 2025 | 自动纠正启用时潜在 deadlock | Major | Open | — |
分析:调度正确性 Issue 的修复率很高(9/10 Resolved),YARN-11702(过量分配)和 YARN-11834(ACCEPTED 卡住)在 3.5.0 修复,对生产环境影响重大。YARN-11843(自动纠正 deadlock)是唯一 Open 的调度正确性 Bug。
主题 8:调度放置优化
| JIRA ID | 年份 | 标题 | 状态 |
| YARN-11704 | 2024 | 避免嵌套 AND 放置约束 | Open |
| YARN-11732 | 2024 | SchedulerNode#reservedContainer NPE | Resolved |
| YARN-11736 | 2024 | 增强 MultiNodeLookupPolicy 比较器 | Open |
| YARN-11766 | 2025 | 实现 DELAYED_OR 运算符 | Open |
主题 9:Federation 调度
| JIRA ID | 年份 | 标题 | 状态 |
| YARN-11321 | 2022 | 添加 getSchedulerOverview 到 RMWebServices | Open |
| YARN-11633 | 2023 | 改进 LoadBasedRouterPolicy 使用可用 vcores | Open |
三、完整时间线全景图
2022
├── YARN-11067 (Feb) — Resource overcommitment fix ✅
├── YARN-11073 (Feb) — Tiny queue 不必要抢占 ✅ 3.4.0
├── YARN-11147 (Apr) — Thread safety fixes ✅
├── YARN-11152 (Apr) — QueueMetrics 泄漏 ✅
├── YARN-11171 (Jun) — 高优饥饿、低优未抢占 ❌ Open
├── YARN-11191 (Jun) — refreshQueue deadlock ✅
├── YARN-11194 (Jun) — FairShare sibling 公平性 ❌ Open
├── YARN-11202 (Jun) — getApplications 优化 ✅
├── YARN-11216 (Jul) — ConfigurationProperties 重建 ❌ Patch Available
├── YARN-11321 (Sep) — Federation getSchedulerOverview ❌ Open
2023
├── YARN-11411 (Jan) — 并发调度器 umbrella ⏳ In Progress
├── YARN-11412 (Jan) — 并发 Users Manager ⏳ In Progress
├── YARN-11428 (Feb) — FS 抢占不执行 ❌ Open
├── YARN-11440 (Feb) — 并发 Leaf Queue ❌ Open
├── YARN-11482 (Apr) — DRF 比较器修复 ✅
├── YARN-11501 (May, Critical) — RM deadlock ✅
├── YARN-11503 (May) — Mutation API 队列停止分配 ❌ Open
├── YARN-11507 (Jun) — CSQueue DominantResourceCalculator ❌ Open
├── YARN-11560 (Sep, Blocker) — Multi-node + async NPE ✅
├── YARN-11573 (Sep) — 优先选择无 reserved 节点 ✅
├── YARN-11615 (Nov) — FS 比较方法违反契约 ❌ Open
├── YARN-11623 (Dec) — FS AM 抢占文档 ❌ Open
├── YARN-11624 (Dec) — 配置禁用 AM 抢占 ❌ Open
├── YARN-11633 (Dec) — Federation LoadBasedRouterPolicy ❌ Open
2024
├── YARN-11639 (Jan) — PriorityUtilizationQueue 并发修改 ✅
├── YARN-11640 (Jan) — CS FairOrderingPolicy 优先级 ❌ Open
├── YARN-11643 (Jan) — Multi Node 预检查跳过 ❌ Open
├── YARN-11648 (Jan) — CS 资源释放未激活 ❌ Open
├── YARN-11656 (Feb) — RMStateStore 阻塞 ❌ Patch Available
├── YARN-11660 (Mar) — SingleConstraint 性能回退 ✅ 3.4.1
├── YARN-11684 (Apr) — PriorityQueueComparator 违反契约 ✅
├── YARN-11686 (Apr) — 异步调度索引修正 ❌ Open
├── YARN-11693 (Apr) — Container 调度器重构 ❌ Open
├── YARN-11697 (May) — FS removeApplicationAttempt 竞态 ❌ Open
├── YARN-11702 (Jun, Critical) — 过量分配容器 ✅ 3.5.0
├── YARN-11704 (Jul) — 嵌套 AND 放置约束 ❌ Open
├── YARN-11720 (Sep) — FS + NodeLabels 负指标 ❌ Open
├── YARN-11728 (Sep) — Multi-node 调度挂起 ❌ Open
├── YARN-11732 (Sep) — SchedulerNode NPE ✅
├── YARN-11736 (Oct) — MultiNodeLookupPolicy 比较器 ❌ Open
├── YARN-11749 (Dec) — 跳过不必要的 node-match ❌ Open
├── YARN-11750 (Dec) — 并行初始化队列 ❌ Open
2025
├── YARN-11752 (Jan) — Global Scheduler 容器分配时间 ✅ 3.5.0
├── YARN-11766 (Feb) — DELAYED_OR 运算符 ❌ Open
├── YARN-11781 (Mar) — 动态请求处理 ❌ Open
├── YARN-11785 (Mar) — QueueMetrics 竞态 ✅
├── YARN-11798 (Mar) — 预检查分离 ✅ 3.5.0
├── YARN-11809 (Apr) — CS backoff 机制 ❌ Open
├── YARN-11834 (Jul) — App ACCEPTED 卡住 ✅ 3.5.0
├── YARN-11843 (Aug) — 自动纠正 deadlock ❌ Open
├── YARN-11885 (Nov) — CS UI Phase 1 ✅ 3.5.0
├── YARN-11886~11890 (Nov) — CS UI sub-tasks ✅ 3.5.0
├── YARN-11907 (Dec) — FairSharePolicy 饥饿 ⚠️ Patch Available
2026
├── YARN-11944 (Mar) — CS UI 改进 Phase 2 ❌ Open
├── YARN-11945~11951 (Mar) — CS UI 视图迁移 ❌ Open
├── YARN-11966 (Jun, Critical) — PartitionQueueMetrics ❌ Patch Available
├── YARN-11968 (Jun) — FairOrderingPolicy 重复扫描 ❌ Open
四、待解决的 Top 5 关键 Issue
| 排名 | Issue | 领域 | 影响 | 阻碍 |
| 🥇 | YARN-11411 — 并发调度器 | 架构 | 大集群调度吞吐量瓶颈 | 3.5年未完成,复杂度极高 |
| 🥈 | YARN-11907 — FairSharePolicy 饥饿 | FS | 队列无法获取公平份额 | Patch 未合入 |
| 🥉 | YARN-11966 — PartitionQueueMetrics 冲突 | FS | Critical 级 metrics 设计缺陷 | Patch Available |
| 🏅 | YARN-11843 — 自动纠正 deadlock | CS | 自动纠正功能导致死锁 | 无补丁 |
| 🏅 | YARN-11750 — 队列并行初始化 | 性能 | RM 启动时间优化 | 实现中 |
五、社区动态总结
| 维度 | 发现 |
| 最活跃领域 | 性能优化(~15 个 Issue)> CS UI(~14 个)> 抢占(~8 个) |
| 修复率 | 整体约50%,调度正确性类修复率最高(90%),CS 功能类最低(~30%) |
| 重大发布 | 3.4.0: 2022-2023 基础修复集中发布;3.5.0: Global Scheduler 加速 + CS UI + 过量分配修复 |
| 架构级项目 | 并发调度器(YARN-11411)已推进 3.5 年仍未完成,是最大技术债 |
| 新方向 | CS UI 是 2025-2026 最大投入(14 个子任务),标志着从功能到可观测性的转变 |
| 性能趋势 | 从 2022 的配置加载优化 → 2024 的调度路径匹配优化 → 2025 的核心容器分配加速 |
| 饥饿问题 | 2026 年 Fair Scheduler 的饥饿问题(YARN-11907, 11968, 11966)集中涌现,值得关注 |
核心结论
- 3.5.0 是 YARN 调度器优化的里程碑版本 — YARN-11752(分配加速)、YARN-11798(预检查分离)、YARN-11702(过量分配修复)、YARN-11834(ACCEPTED 卡住修复)、YARN-11885(CS UI)均在 3.5.0 合并
- 并发调度器是最大的未完成工程 — YARN-11411 已推进 3.5 年,是整个 YARN 调度器未来性能的基石,但复杂度远超预期
- Fair Scheduler 的公平性在退化 — 2025-2026 年多个 Issue(YARN-11907 饥饿、YARN-11966 metrics 冲突)表明 FS 的基础公平性保障正在出现问题
- 运维可观测性显著提升 — CS UI Phase 1/2(14 个子任务)是最大的新功能投入
附录:按主题分类的完整 Issue 列表
A. 性能优化(15 个)
YARN-11968, YARN-11752, YARN-11798, YARN-11750, YARN-11749, YARN-11660, YARN-11643, YARN-11686, YARN-11693, YARN-11440, YARN-11411, YARN-11412, YARN-11656, YARN-11216, YARN-11202
B. 并发调度器(4 个)
YARN-11411(umbrella), YARN-11440(leaf queue), YARN-11412(users mgr), YARN-11693(container scheduler)
C. 抢占(8 个)
YARN-11073, YARN-11171, YARN-11194, YARN-11428, YARN-11624, YARN-11623, YARN-11907, YARN-11573
D. 调度正确性(10 个)
YARN-11191, YARN-11501, YARN-11560, YARN-11639, YARN-11684, YARN-11702, YARN-11785, YARN-11834, YARN-11843, YARN-11732
E. Capacity Scheduler(12 个)
YARN-11573, YARN-11503, YARN-11507, YARN-11640, YARN-11648, YARN-11728, YARN-11766, YARN-11781, YARN-11809, YARN-11843, YARN-11750, YARN-11702
F. Fair Scheduler(8 个)
YARN-11482, YARN-11615, YARN-11697, YARN-11720, YARN-11907, YARN-11966, YARN-11968, YARN-11194
G. CS UI(14 个)
YARN-11885(umbrella), YARN-11886~11890(7 sub-tasks), YARN-11944(umbrella), YARN-11945~11951(7 sub-tasks)
H. 调度放置(4 个)
YARN-11704, YARN-11732, YARN-11736, YARN-11766
I. Federation(2 个)
YARN-11321, YARN-11633
分析由 Apache Issue AI Analyzer 辅助完成 | 覆盖 2022-2026 年共 4.5 年跨度