Apache Livy 0.9.0-incubating 介绍与选型指南

Apache Livy 0.9.0-incubating Spark REST 服务介绍与选型指南:版本信息基准、核心概念、功能特性、官方 REST 快速上手、适用场景限制及与 Kyuubi/Zeppelin/Spark Connect 的量化选型对比

Apache LivyApache LivyApacheSpark2026/10/18

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 Releaseshttps://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.htmlREST 接口定义

二、软件概述

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-incubatingApache Kyuubi 1.12.0Apache Zeppelin 0.12.1Spark Connect(Spark 内置模块)
开源许可Apache-2.0Apache-2.0Apache-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。

八、参考链接