Apache YuniKorn 1.10.0 介绍与选型指南
Apache YuniKorn 1.10.0 介绍与选型指南:Kubernetes 应用感知调度器,覆盖核心架构、层次队列与 Gang Scheduling 特性、Helm 快速上手、适用限制及与 YARN、Volcano、Kueue 的量化选型对比
Apache YuniKorn 1.10.0 介绍与选型指南
一、信息基准
| 项目 | 内容 |
|---|---|
| 查询日期 | 2026-10-18 |
| 本次介绍版本 | Apache YuniKorn 1.10.0 |
| 版本依据 | 官网横幅公告「1.10.0 has been released」;downloads.apache.org/yunikorn/ 发行目录存在 1.10.0/ 目录;GitHub yunikorn-core 仓库 Releases Feed 中「Apache YuniKorn v1.10.0」条目更新时间为 2026-09-10 |
| 发行组成 | yunikorn-core(调度核心)、yunikorn-k8shim(Kubernetes 接入层)、yunikorn-web(管理界面)、yunikorn-scheduler-interface(调度接口)、yunikorn-release(Helm Chart)多个仓库协同发行 |
| 编程语言 | Go、JavaScript(ASF DOAP 项目记录 projects.apache.org/json/projects/yunikorn.json) |
| 开源许可 | Apache License 2.0(GitHub 仓库页与 ASF 项目记录均标注) |
| 项目状态 | Apache 软件基金会顶级项目(TLP),活跃发行中 |
| 官方来源清单 | 官网 https://yunikorn.apache.org/ ;下载目录 https://downloads.apache.org/yunikorn/ ;官方文档 https://yunikorn.apache.org/docs/ ;ASF 项目记录 https://projects.apache.org/json/projects/yunikorn.json ;ASF 公告 https://news.apache.org/foundation/entry/the-apache-software-foundation-announces82 |
二、软件概述
本文介绍 Apache YuniKorn 1.10.0(2026-09-10 由官方 GitHub Release 记录确认发行)。
Apache YuniKorn 是 Apache 软件基金会的独立资源调度器项目,官方定位是「为在 Kubernetes 上运行批处理(Batch)、数据(Data)与机器学习(ML)负载释放资源调度能力」。它以自定义调度器的方式接入 Kubernetes 集群,替代集群默认调度器,为多租户场景提供层次化队列、资源公平性、应用感知排序、抢占与 Gang Scheduling 等能力。
项目历史方面:YuniKorn 最初由 Cloudera 开发(ASF 官方公告称项目 2016 年 3 月起在该公司内部孵化);2020 年 1 月进入 Apache 孵化器(ASF 项目记录 created 字段为 2020-01-21);2022 年 5 月 16 日由 ASF 官方宣布毕业成为顶级项目(TLP)。
三、核心架构
3.1 调度核心 yunikorn-core
yunikorn-core 是用 Go 编写的调度核心,封装全部调度逻辑:队列树管理、排队应用排序、节点资源分配、抢占判定等均在此实现,不与具体资源管理平台耦合。
3.2 Kubernetes 接入层 yunikorn-k8shim
yunikorn-k8shim 是面向 Kubernetes 的 shim 层,以定制调度器形态部署进集群。官方 README 说明:默认情况下,凡 Pod 规格中 schedulerName: yunikorn 的工作负载均由它接管调度;shim 层依赖 scheduler-interface 定义的接口与 yunikorn-core 协作完成实际调度。
3.3 准入控制器与管理界面
官方 Helm Chart 默认安装三个组件:调度器(scheduler)、Web 服务(web)与准入控制器(admission-controller)。官方入门文档说明:安装准入控制器后,它会将流量路由至 YuniKorn,从而把资源调度委托给 YuniKorn,也可通过参数关闭该行为。yunikorn-web 提供集群、队列与应用的资源使用集中观测界面。
3.4 调度接口 yunikorn-scheduler-interface
调度器接口仓库定义了核心与各 shim 层之间的协议,接口以 Go 语言编写并独立发版,是 YuniKorn 保持「核心与平台解耦」的关键设计。
四、功能特性
依据官方首页与官方文档 Features 页,YuniKorn 的主要特性包括:
- 应用感知调度(App-aware scheduling):识别用户、应用与队列三个维度,并结合资源、排序与优先级做出决策,区别于默认调度器逐 Pod、无上下文的调度方式;
- 层次化资源队列:队列层级可映射组织结构,通过最小/最大容量定义各租户的资源保证与弹性(超卖)空间;
- 资源公平性与应用排序:支持 FIFO 与 FAIR 两种应用排序策略,保证跨队列资源公平;
- 可插拔节点排序策略:按需选择节点打分与排序方式;
- 抢占(Preemption):支持回收低优先级资源保障高优先级应用;
- Gang Scheduling:一组任务成组调度,减少资源碎片,并可在云上联动自动伸缩触发扩容;
- Bin-packing:提升装箱密度,降低云上运行成本;
- 可观测性:官方文档提供 Prometheus 集成说明,并自带中央管理界面跟踪集群、队列与应用的资源利用。
五、快速上手
以下为官方入门文档给出的最小部署示例(仅转述,本文不做本地实测),要求具备一个 Kubernetes 集群或本地 Kubernetes 开发环境(如 MiniKube),并安装 Helm 3 及以上版本:
helm repo add yunikorn https://apache.github.io/yunikorn-release
helm repo update
kubectl create namespace yunikorn
helm install yunikorn yunikorn/yunikorn --namespace yunikorn
官方文档说明:默认 Chart 会在集群中安装调度器、Web 服务与准入控制器三个组件。来源:YuniKorn 官方文档 Get Started(https://yunikorn.apache.org/docs/ )。
六、适用场景与限制
6.1 适用场景
- 多租户 Kubernetes 集群需要层次化队列配额与跨队列公平性;
- 批处理与数据类负载(如 Spark 作业)在 Kubernetes 上需要队列化、排序与可预期的调度结果;
- 机器学习训练等需要 Gang Scheduling 的场景,减少资源碎片并联动自动伸缩;
- 云上环境关注装箱率与成本优化(Bin-packing)。
6.2 限制
- 平台范围:官方文档的兼容矩阵仅覆盖 Kubernetes 版本,当前发行版面向 Kubernetes 场景;
- 发布策略:官方版本说明明确「项目只做 minor release,不做 patch release」,特性与修复只进开发分支;
- 升级建议:官方建议始终使用最新的 YuniKorn 版本,早期版本内嵌的较旧依赖可能无法使用新 shim 暴露的功能。
七、同类选型对比
对比对象选取 Apache Hadoop YARN、Volcano 与 Kueue 三个同类调度系统。下表数据均于 2026-10-18 联网实查(GitHub 仓库页 stars 与 Releases Feed 最近发版)。
| 维度 | Apache YuniKorn 1.10.0 | Apache Hadoop YARN | Volcano | Kueue |
|---|---|---|---|---|
| 开源许可 | Apache-2.0 | Apache-2.0 | Apache-2.0 | Apache-2.0 |
| GitHub stars + 最近发版 | yunikorn-core 1,036 stars;1.10.0(GitHub Release 2026-09-10 更新) | apache/hadoop 15,694 stars;最近发布标签 rel/release-3.5.0 | volcano-sh/volcano 6,023 stars;v1.16.0(另有 v1.15.3 维护版) | kubernetes-sigs/kueue 3,079 stars;v0.20.2(另有 v0.19.9 维护线) |
| 版本节奏 | 官方明示仅做 minor release、无 patch release | Hadoop 以大版本加维护分支滚动,3.x 系列多线并行 | 1.x 高频迭代,minor 与补丁版并行 | 跟随 Kubernetes 生态节奏,多分支并行维护 |
| 兼容矩阵 | 官方矩阵仅列 Kubernetes:K8s 1.36.x 自 1.10.0 起支持,1.35.x 自 1.9.0 起,1.34.x/1.33.x 自 1.8.0 起,1.32.x 自 1.7.0 起,1.30.x/1.31.x 自 1.6.0 起(官方版本说明页) | 与 Hadoop 生态绑定,服务 MapReduce、Spark、Tez、Flink 等计算框架的 YARN 运行形态 | 面向 Kubernetes 的批量调度系统,以自定义资源扩展作业语义 | Kubernetes 原生方式管理 Job 等队列化工作负载,深度依赖 K8s API |
选型建议:已有 Hadoop 离线集群或以 YARN 为计算底座的企业沿用 YARN 即可;在 Kubernetes 上做批量与 ML 负载的成组调度,Volcano 与 Kueue 都是社区更活跃的选择,若强需求是「层次化队列 + 多租户公平 + 应用感知排序」这一 YARN 式治理模型的原生 K8s 移植,YuniKorn 是最直接的对口方案,但需接受其相对较小的社区规模与「只发 minor 版本」的升级策略。
八、参考链接
- 官网:https://yunikorn.apache.org/
- 官方文档:https://yunikorn.apache.org/docs/
- 版本兼容说明(官方文档 Version details):https://yunikorn.apache.org/docs/ (Get Started → Version details)
- 发行目录:https://downloads.apache.org/yunikorn/
- 调度核心仓库:https://github.com/apache/yunikorn-core
- Kubernetes 接入层仓库:https://github.com/apache/yunikorn-k8shim
- 调度接口仓库:https://github.com/apache/yunikorn-scheduler-interface
- Web 界面仓库:https://github.com/apache/yunikorn-web
- Helm Chart 仓库:https://github.com/apache/yunikorn-release
- ASF 官宣毕业为 TLP(2022-05-16):https://news.apache.org/foundation/entry/the-apache-software-foundation-announces82
- ASF 项目记录(DOAP JSON):https://projects.apache.org/json/projects/yunikorn.json