首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >Apache YARN 调度器优化全景分析(2022 — 2026)

Apache YARN 调度器优化全景分析(2022 — 2026)

作者头像
zeekling
发布2026-07-20 09:18:41
发布2026-07-20 09:18:41
310
举报

分析时间: 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 优化

性能优化演进路线
代码语言:javascript
复制
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


三、完整时间线全景图

代码语言:javascript
复制
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)集中涌现,值得关注

核心结论

  1. 3.5.0 是 YARN 调度器优化的里程碑版本 — YARN-11752(分配加速)、YARN-11798(预检查分离)、YARN-11702(过量分配修复)、YARN-11834(ACCEPTED 卡住修复)、YARN-11885(CS UI)均在 3.5.0 合并
  2. 并发调度器是最大的未完成工程 — YARN-11411 已推进 3.5 年,是整个 YARN 调度器未来性能的基石,但复杂度远超预期
  3. Fair Scheduler 的公平性在退化 — 2025-2026 年多个 Issue(YARN-11907 饥饿、YARN-11966 metrics 冲突)表明 FS 的基础公平性保障正在出现问题
  4. 运维可观测性显著提升 — 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 年跨度

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2026-07-19/,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、调研概览
    • 按年份分布
  • 二、核心主题深度分析
    • 🥇 主题 1:性能优化(最核心方向)
      • 性能优化演进路线
    • 🥈 主题 2:并发调度器建设(架构级改造)
    • 🥉 主题 3:抢占(Preemption)优化
    • 主题 4:Capacity Scheduler 增强
    • 主题 5:Fair Scheduler 专项
    • 主题 6:Capacity Scheduler UI(2025-2026 重大工程)
    • 主题 7:调度正确性(Bug 修复)
    • 主题 8:调度放置优化
    • 主题 9:Federation 调度
  • 三、完整时间线全景图
  • 四、待解决的 Top 5 关键 Issue
  • 五、社区动态总结
    • 核心结论
  • 附录:按主题分类的完整 Issue 列表
    • A. 性能优化(15 个)
    • B. 并发调度器(4 个)
    • C. 抢占(8 个)
    • D. 调度正确性(10 个)
    • E. Capacity Scheduler(12 个)
    • F. Fair Scheduler(8 个)
    • G. CS UI(14 个)
    • H. 调度放置(4 个)
    • I. Federation(2 个)
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档