Apache Celeborn 0.7.0 介绍与选型指南

Apache Celeborn 0.7.0 认知与选型:远程混洗服务 RSS 的架构、特性、官方示例与同类对比(官方资料溯源,查询日期 2026-10-18)

Apache CelebornCelebornSpark大数据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 实查),本文不做本地实测。

  1. 获取发行包(官方发行目录 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
  1. 配置并启动服务(官方 Deployment 文档骨架):
# conf/masters 写入 Master 主机名,conf/workers 写入 Worker 主机名
# conf/celeborn-env.sh 调整 Master/Worker 内存与日志目录
sbin/start-master.sh
sbin/start-workers.sh
  1. 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.0Apache UniffleSpark 内置 shuffleFlink 内置 shuffle
类型定位独立 RSS 服务(Master/Worker)独立 RSS 服务(Coordinator/Server)引擎内置(本地盘 + 外部 Shuffle Service)引擎内置(Netty 流式)
许可Apache-2.0Apache-2.0Apache-2.0Apache-2.0
开发语言Scala/Java(JVM)Java(JVM)Scala/JavaJava
社区活跃度GitHub stars 约 1.1k;2026-08 发 0.7.0GitHub stars 约 500;持续发版GitHub stars 约 40k;季度级发版GitHub stars 约 25k;季度级发版
版本节奏0.x 半年级别大版本 + patch0.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,则保留引擎内置方案最省运维。

八、参考链接