Apache Livy 0.9.0-incubating 介绍与选型指南
Apache Livy 0.9.0-incubating Spark REST 服务介绍与选型指南:版本信息基准、核心概念、功能特性、官方 REST 快速上手、适用场景限制及与 Kyuubi/Zeppelin/Spark Connect 的量化选型对比
Apache Livy 0.9.0-incubating 介绍与选型指南
一、信息基准
- 查询日期:2026-10-18。
- 版本依据:Apache Livy 当前最新版本为 0.9.0-incubating(孵化器版本,版本号带 -incubating 后缀)。GitHub 仓库 apache/livy 的 Releases 页面显示 v0.9.0-incubating 发布于 2026-02-09;Apache 官方发行目录 downloads.apache.org/incubator/livy/ 提供 0.4.0-incubating 至 0.9.0-incubating 的发行目录;项目官网下载页 livy.apache.org/download/ 亦列出 0.9.0-incubating,三处证据一致。
- 项目状态:Livy 至今仍在 Apache 孵化器中,尚未毕业为顶级项目,发行物名称与版本号均保留 incubating 标识。
- 开源许可:Apache License 2.0。
- 官方来源清单:
| 来源 | 地址 | 说明 |
|---|---|---|
| 项目官网 | https://livy.apache.org | 项目主页与下载入口 |
| 官方下载页 | https://livy.apache.org/download/ | 最新版本 0.9.0-incubating |
| GitHub Releases | https://github.com/apache/livy/releases | 版本发布记录(0.9.0-incubating,2026-02-09) |
| Apache 发行目录 | https://downloads.apache.org/incubator/livy/ | 官方发行包(0.4.0 至 0.9.0-incubating) |
| 官方入门文档 | https://livy.apache.org/get-started/ | 环境要求与服务启动说明 |
| 官方 REST API 文档 | https://livy.apache.org/docs/latest/rest-api.html | REST 接口定义 |
二、软件概述
2.1 定位
Apache Livy 是面向 Apache Spark 的开源 REST 服务,本次介绍的版本为 0.9.0-incubating(2026-02-09 发布)。它让用户无需修改 Spark 自身,即可通过 REST 接口向 Spark 集群提交批处理作业(Batch)或开启交互式会话(Session),以 Scala、Python 或 R 代码片段与集群交互,常作为 Notebook、调度系统与自研平台访问 Spark 的中间服务层。
2.2 项目状态
Livy 自进入 Apache 孵化器以来长期保持低频发布:上一版本 0.8.0-incubating 发布于 2023 年 9 月,0.9.0-incubating 于 2026 年 2 月发布,中间间隔约两年四个月。评估时需要正视其维护节奏偏慢、仍处孵化阶段的现状。
三、核心概念
3.1 会话(Session)与批处理(Batch)
- Session:交互式会话,客户端以 REST 方式逐段提交 Scala/Python/R 代码,服务端在 Spark 集群上维持一个长驻的 REPL 进程并回传执行结果,适合探索式分析与 Notebook 场景。
- Batch:批处理作业,客户端提交一个应用 jar 或 Python/R 文件及其参数,由 Livy 代为 spark-submit 并跟踪运行状态,适合调度系统触发的一次性任务。
3.2 与 YARN 及 Spark 的关系
Livy Server 本身是常驻服务进程,通过 spark-submit 将作业提交到 YARN 集群运行;官方入门文档建议以 YARN cluster 模式提交应用,使 Driver 运行在集群侧,提升服务稳定性。Livy 默认读取 SPARK_HOME 下的 Spark 配置,也可通过 SPARK_CONF_DIR 覆盖。
3.3 服务治理组件
- 黑名单配置(spark-blacklist.conf):限制用户可覆盖的 Spark 配置项,防止越权改写关键参数。
- 状态恢复(recovery):Livy 支持将服务状态写入外部存储以便服务重启后恢复会话与作业状态,具体配置以官方文档为准。
四、功能特性
- REST 化的 Spark 接入:以 HTTP/JSON 提交与查询 Session、Batch、Statement 与作业结果,无需在客户端安装 Spark。
- 多语言交互:同一服务内支持 Scala、Python、R 三类会话,结果以 JSON 形式回传。
- 批处理托管:代为执行 spark-submit 并提供作业状态与日志查询接口。
- Spark 版本要求:官方入门文档明确 Livy 0.9.0 要求 Spark 3.0 及以上版本,并使用 Scala 2.12 构建的 Spark 发行版。
- 安全与集成:可与 YARN 队列、Hive/Spark 配置体系配合使用,生态上常与 Apache Zeppelin、Apache Knox 等组件搭配。
五、快速上手
以下步骤引自官方入门文档与 REST API 文档(来源:https://livy.apache.org/get-started/ 与 https://livy.apache.org/docs/latest/rest-api.html ,本文不进行本地实测)。
- 环境要求:安装并配置 Apache Spark(0.9.0 要求 Spark 3.0+、Scala 2.12 构建),本地会话模式需导出 SPARK_HOME 环境变量。
- 启动服务:官方文档给出的启动方式为执行 Livy 发行包中的 bin/livy-server 脚本启动服务,默认监听 8998 端口。
- 官方文档中的 REST 调用形态:通过向 /sessions 提交 JSON(如 {"kind":"spark"})开启交互式会话,通过向 /batches 提交 JSON(如 {"file":"..."})发起批处理作业,随后以 GET 请求轮询状态并读取结果。
六、适用场景与限制
6.1 适用场景
- 非 JVM 侧接入 Spark:为 Python、Go 等语言的自研平台或服务提供 REST 通道,避免客户端部署 Spark。
- Notebook 后端:为 Notebook 类工具提供长驻交互式 Spark 会话管理。
- 调度系统对接:调度平台以 REST 方式提交批处理作业并跟踪状态,替代直接 spark-submit。
6.2 限制
- 维护节奏慢:0.8.0(2023-09)到 0.9.0(2026-02)间隔约两年四个月,问题修复与新特性跟进速度有限,生产引入前应评估自维护成本。
- 孵化阶段:项目至今未从 Apache 孵化器毕业,版本号长期带 incubating 后缀。
- 单服务架构:Livy Server 为单进程服务,虽提供恢复机制,但高可用与横向扩展需自行设计。
七、同类选型对比
对比对象选取 Apache 体系内定位相近的 Kyuubi(Spark/Flink 等引擎的 Thrift/JDBC 服务化网关)、Zeppelin(分析与可视化工作台,内置 Livy 解释器生态)以及 Spark 原生的 Spark Connect 模块。stars 数据为 2026-10-18 从 GitHub 各仓库页面实查,最近发版取自各仓库 Releases 页面。
| 维度 | Apache Livy 0.9.0-incubating | Apache Kyuubi 1.12.0 | Apache Zeppelin 0.12.1 | Spark Connect(Spark 内置模块) |
|---|---|---|---|---|
| 开源许可 | Apache-2.0 | Apache-2.0 | Apache-2.0 | 随 Apache-2.0 的 Spark 发行 |
| GitHub stars / 最近发版 | 961 / 2026-02-09(0.9.0-incubating) | 2370 / 2026-07-28(v1.12.0) | 6665 / 2026-06-13(v0.12.1) | 无独立仓库,随 Spark 发行版发布 |
| 版本节奏 | 0.8.0(2023-09)→ 0.9.0(2026-02),间隔约两年四个月 | 持续小步发版,最近 v1.12.0(2026-07-28),详见官方 Releases | 最近 v0.12.1(2026-06-13),详见官方 Releases | 随 Spark 版本演进,Spark 3.4 起引入该模块 |
| 兼容矩阵 | 要求 Spark 3.0+、Scala 2.12 构建的 Spark,配合 YARN 使用 | 以 JDBC/Thrift 服务化 Spark、Flink 等引擎,兼容 Hive/Spark 生态客户端 | 基于 JDK 运行,通过解释器接入多种引擎 | 依赖 Spark 3.4+ 运行时与配套客户端库 |
选型建议:若需要为 Notebook 与自研平台提供多语言 REST 会话通道且可接受较慢的社区节奏,Livy 0.9.0-incubating 依然是直接对口的选择;若主要诉求是把 Spark/Flink 以标准 JDBC/Thrift 暴露给 BI 与调度工具,Kyuubi 更成熟;若采用 Spark 3.4 及以上版本且客户端可引入 Spark 运行时库,可优先评估原生的 Spark Connect;需要开箱即用的分析工作台则选 Zeppelin。
八、参考链接
- 项目官网:https://livy.apache.org
- 官方下载页:https://livy.apache.org/download/
- 官方入门文档:https://livy.apache.org/get-started/
- 官方 REST API 文档:https://livy.apache.org/docs/latest/rest-api.html
- GitHub Releases:https://github.com/apache/livy/releases
- Apache 发行目录:https://downloads.apache.org/incubator/livy/
- Apache Kyuubi:https://kyuubi.apache.org
- Apache Zeppelin:https://zeppelin.apache.org
- Apache Spark:https://spark.apache.org