Apache YuniKorn 1.10.0 介绍与选型指南

Apache YuniKorn 1.10.0 介绍与选型指南:Kubernetes 应用感知调度器,覆盖核心架构、层次队列与 Gang Scheduling 特性、Helm 快速上手、适用限制及与 YARN、Volcano、Kueue 的量化选型对比

Apache YuniKorn2026/10/18

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.0Apache Hadoop YARNVolcanoKueue
开源许可Apache-2.0Apache-2.0Apache-2.0Apache-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.0volcano-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 releaseHadoop 以大版本加维护分支滚动,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 版本」的升级策略。

八、参考链接

  1. 官网:https://yunikorn.apache.org/
  2. 官方文档:https://yunikorn.apache.org/docs/
  3. 版本兼容说明(官方文档 Version details):https://yunikorn.apache.org/docs/ (Get Started → Version details)
  4. 发行目录:https://downloads.apache.org/yunikorn/
  5. 调度核心仓库:https://github.com/apache/yunikorn-core
  6. Kubernetes 接入层仓库:https://github.com/apache/yunikorn-k8shim
  7. 调度接口仓库:https://github.com/apache/yunikorn-scheduler-interface
  8. Web 界面仓库:https://github.com/apache/yunikorn-web
  9. Helm Chart 仓库:https://github.com/apache/yunikorn-release
  10. ASF 官宣毕业为 TLP(2022-05-16):https://news.apache.org/foundation/entry/the-apache-software-foundation-announces82
  11. ASF 项目记录(DOAP JSON):https://projects.apache.org/json/projects/yunikorn.json