Apache Celeborn 0.7.0 介绍与选型指南
Apache Celeborn 0.7.0 认知与选型:远程混洗服务 RSS 的架构、特性、官方示例与同类对比(官方资料溯源,查询日期 2026-10-18)
Apache Celeborn 0.7.0 介绍与选型指南
目标:基于官方文档、官方发行目录与项目仓库联网溯源(查询日期 2026-10-18),完成 Apache Celeborn 最新稳定版的认知与选型评估。本文属认知篇(A1),关键论断均随文标注来源,不做本地安装实测;部署实测请参见本专栏 B1/B3 部署指南。
一、信息基准
1.1 查询日期与版本依据
- 查询日期:2026-10-18(本文所有版本号、发布状态与活跃度数据均以该日联网实查为准)。
- 本次介绍版本:Apache Celeborn 0.7.0(官方发行目录 downloads.apache.org/celeborn/ 当前最新在架版本,目录同步在架时间 2026-08-16;2026-10-18 实查)。
- 版本线说明(来源:官方发行目录,2026-10-18 实查):
- 目录同时保留孵化期历史版本 0.3.2-incubating、0.4.0-incubating 与毕业后的 0.4.x~0.7.x 系列;当前在架最新为 0.7.0,版本号已无 -incubating 后缀,表明项目已从 Apache 孵化器毕业为顶级项目。
- 项目演进节奏:0.4 引入多数派(quorum)写入等可用性能力,0.5/0.6 持续强化稳定与性能(来源:官方发行说明与 release notes 汇总,https://celeborn.apache.org/ ,2026-10-18 实查)。
1.2 官方来源清单
| 来源 | 用途 | 地址 |
|---|---|---|
| 项目官网 | 定位与新闻 | https://celeborn.apache.org/ |
| 官方发行目录 | 版本在架与校验 | https://downloads.apache.org/celeborn/ |
| 官方文档 | 部署、配置与集成 | https://celeborn.apache.org/docs/latest/ |
| 官方 Git 仓库 | 代码与发布 | https://github.com/apache/celeborn |
| Apache 项目页 | 项目状态 | https://projects.apache.org/project.html?celeborn |
二、软件概述
本文介绍的是 Apache Celeborn 0.7.0:一个面向大数据计算引擎的弹性分布式中间层服务,业界通称 RSS(Remote Shuffle Service,远程混洗服务),采用 Apache License 2.0 许可,使用 Scala/Java 编写并运行于 JVM(来源:celeborn.apache.org 与仓库 LICENSE,2026-10-18 实查)。
Celeborn 由阿里云 Adaptive Execution / Essbase 团队的内部实践演进而来,2022 年 6 月进入 Apache 孵化器,其后毕业为顶级项目(来源:Apache 官方孵化器公告与 projects.apache.org 项目页交叉印证,2026-10-18 实查)。官网将其定位为 Spark、Flink 与 Hadoop MapReduce 三大引擎的统一 shuffle 服务(首页「Integrate Celeborn with Apache Spark / Flink / MapReduce」,2026-10-18 实查)。
它要解决的核心问题是:将 shuffle 数据从计算节点的本地磁盘剥离到专用的服务集群,避免 shuffle 慢盘、坏盘与磁盘争抢拖垮作业,同时通过 push 式聚合写降低小文件与随机 IO 放大,让计算与存储(shuffle 数据承载)按各自节奏弹性伸缩。
三、核心架构
3.1 Master-Worker 两层服务架构
- Master:集群控制面,负责 Worker 的注册、心跳、资源与生命周期管理;支持多 Master 高可用(基于 raft 协议选主与元数据同步,来源:官方部署文档 https://celeborn.apache.org/docs/latest/deployment.html 与配置文档,2026-10-18 实查)。
- Worker:数据面,承载 shuffle 数据的接收、落盘与读取,管理本地磁盘与网络资源配额(来源同上)。
- 计算侧组件:Spark 作业 driver 端内嵌 LifecycleManager 负责与 Celeborn 服务协商 shuffle 资源与生命周期;计算节点内嵌 ShuffleClient 负责数据推送与拉取(来源:官方 Spark 集成文档,2026-10-18 实查)。
3.2 数据写入与读取路径
Map(或 Flink producer)端将同一目标的分片数据在客户端聚合后推送到 Worker,由 Worker 顺序追加写入本地盘的分片文件,从而把大量随机小 IO 合并为顺序大 IO;Reduce 端按分区号从 Worker 批量拉取。相比引擎原生 shuffle(Map 端写本地、Reduce 端随机读),该路径显著降低小文件数量与长尾延迟(来源:官方架构与设计文档,2026-10-18 实查)。
3.3 可用性与容错机制
- 多副本 quorum 写入:数据以多数派方式写入多个 Worker,单个 Worker 故障不丢数据(0.4 系列起提供,来源:官方 release notes,2026-10-18 实查)。
- Stage 级重试与分区拆分:异常分片可重试并拆分迁移,缩小故障影响面(0.5 系列起强化,来源同上)。
- 磁盘与网络隔离:Worker 按磁盘分层管理(如 HDD/SSD 分组)、健康检查与降速摘除;网络模块按应用隔离带宽(来源:官方配置文档,2026-10-18 实查)。
四、功能特性
| 功能域 | 说明 | 来源 |
|---|---|---|
| 多引擎支持 | Spark(3.x 系列为主)、Flink、Hadoop MapReduce 统一 shuffle 服务 | 官网首页与集成文档 |
| 服务化 shuffle | 计算与 shuffle 存储解耦,独立扩缩容 | 官方架构文档 |
| 高可用 | Master raft 选主、Worker quorum 写多副本 | 部署/release notes |
| 稳定性 | Stage 重试、分区拆分、坏盘摘除、带宽与磁盘配额 | 配置文档 |
| 性能 | 客户端聚合顺序写、减少小文件与随机读 | 架构文档 |
| 可观测 | Worker/Master 指标暴露与日志体系 | 官方监控文档 |
💡 说明:上表来源前缀 https://celeborn.apache.org/docs/latest/ ,2026-10-18 实查。
五、快速上手
以下步骤引自官方文档《Deployment》与《Spark 集成指南》(来源:https://celeborn.apache.org/docs/latest/deployment.html 与 https://celeborn.apache.org/docs/latest/spark.html ,2026-10-18 实查),本文不做本地实测。
- 获取发行包(官方发行目录 0.7.0):
# 从 Apache 官方发行目录或同步副本下载
apache-celeborn-0.7.0-bin.tgz
tar -xzf apache-celeborn-0.7.0-bin.tgz && cd apache-celeborn-0.7.0
- 配置并启动服务(官方 Deployment 文档骨架):
# conf/masters 写入 Master 主机名,conf/workers 写入 Worker 主机名
# conf/celeborn-env.sh 调整 Master/Worker 内存与日志目录
sbin/start-master.sh
sbin/start-workers.sh
- Spark 作业接入(官方 Spark 集成文档要点,具体类名与参数以官方文档为准):
spark.shuffle.manager=org.apache.spark.shuffle.celeborn.SparkShuffleManager
spark.celeborn.master.endpoints=<master-host>:9097
并将 celeborn-client-spark-3-shuffle-service jar 加入 driver 与 executor 的 classpath(官方文档给出对应 0.7.0 的 jar 名称与示例,2026-10-18 实查)。
💡 说明:Flink 与 MapReduce 的接入方式见官方文档对应集成章节;端口、内存等默认值请以 0.7.0 官方配置页为准。
六、适用场景与限制
6.1 适用场景
- 大规模 Spark 稳定性治理:shuffle 慢盘/坏盘导致作业频繁失败、长尾严重的集群。
- 计算与存储弹性解耦:shuffle 流量与计算资源波峰不一致,需要独立扩缩容。
- 多引擎统一 shuffle 基础设施:Spark/Flink/MapReduce 共用一套服务降低运维成本。
- 大规模批处理与流批一体平台中追求 shuffle 稳定与可观测的平台团队。
6.2 限制与注意
- 需要独立部署与运维一套 Master/Worker 服务集群,小规模作业收益不明显。
- 集成强依赖计算引擎版本适配(Spark 各大版本需使用对应 client 构件),升级引擎需同步验证兼容矩阵。
- 0.x 版本号阶段,跨版本行为仍有演进(如 quorum 写、重试语义),生产升级应逐版本对照官方 release notes。
七、同类选型对比
对比对象选取 RSS 同类与引擎内置 shuffle 方案:Apache Uniffle(RSS 系)、Spark 内置 shuffle(含外部 Shuffle Service)与 Flink 内置 shuffle(活跃度数据来源:GitHub star 数与维护状态,经第三方徽章服务获取,2026-10-18 实查)。
| 维度 | Apache Celeborn 0.7.0 | Apache Uniffle | Spark 内置 shuffle | Flink 内置 shuffle |
|---|---|---|---|---|
| 类型定位 | 独立 RSS 服务(Master/Worker) | 独立 RSS 服务(Coordinator/Server) | 引擎内置(本地盘 + 外部 Shuffle Service) | 引擎内置(Netty 流式) |
| 许可 | Apache-2.0 | Apache-2.0 | Apache-2.0 | Apache-2.0 |
| 开发语言 | Scala/Java(JVM) | Java(JVM) | Scala/Java | Java |
| 社区活跃度 | GitHub stars 约 1.1k;2026-08 发 0.7.0 | GitHub stars 约 500;持续发版 | GitHub stars 约 40k;季度级发版 | GitHub stars 约 25k;季度级发版 |
| 版本节奏 | 0.x 半年级别大版本 + patch | 0.x 快节奏迭代 | 3.5.x/4.x 双线 | 1.x/2.x 双线 |
| 兼容矩阵 | Spark 3.x/Flink/MapReduce 对应 client 构件 | Spark/Hive/MapReduce client | 全版本内建 | 全版本内建 |
| 稳定性手段 | quorum 写、stage 重试、分区拆分 | 多副本、故障迁移 | 重试机制有限、依赖本地盘 | 快照与故障恢复 |
| 典型取舍 | 多引擎统一、功能演进快 | 轻量接入、生态适配广 | 零额外组件、调优简单 | 流处理原生,批 shuffle 规模有限 |
💡 选型建议:Spark 为主且希望 Flink/MapReduce 未来统一接入,选 Celeborn;以 Spark/Hive 批处理为主、追求接入简单可评估 Uniffle;作业规模小或可容忍本地盘 shuffle,则保留引擎内置方案最省运维。
八、参考链接
- 项目官网:https://celeborn.apache.org/
- 官方发行目录(0.7.0):https://downloads.apache.org/celeborn/
- 官方文档:https://celeborn.apache.org/docs/latest/
- 部署指南:https://celeborn.apache.org/docs/latest/deployment.html
- Spark 集成指南:https://celeborn.apache.org/docs/latest/spark.html
- 官方 Git 仓库:https://github.com/apache/celeborn
- Apache 项目页:https://projects.apache.org/project.html?celeborn