8998 是什么
8998 是 Apache Livy 的 REST 端口。Livy 的作用是把 Spark 能力以 HTTP 接口暴露出去:客户端提交批作业(/batches)或交互式会话(/sessions),Livy 负责在集群上创建 Spark 上下文并跟踪状态,常用于数据平台的「提交 jar 跑任务」以及 Notebook 的后端。会话中可以执行任意 Spark 代码,因此未鉴权的 Livy 等于集群上的代码执行入口。
基本信息
| 服务 | Apache Livy(默认 8998) |
|---|---|
| 协议 | TCP/HTTP(REST) |
| 用途 | REST 提交 Spark 作业与会话 |
| 主要端点 | /batches、/sessions |
| 常见调用方 | 调度平台、Notebook、业务系统 |
| 安全等级 | 仅数据平台网段 |
典型使用场景
- 平台化提交:业务系统通过 REST 提交 Spark 作业
- 交互式分析:为 Notebook 提供会话上下文
- 作业排障:查询批作业状态与动作日志
- 安全核查:确认启用了认证鉴权与用户代理机制
- 资源治理:设置空闲会话回收,避免占满队列
- 版本升级:Spark 与 Livy 版本配套验证
Livy 主要端点
| 端点 | 方法 | 用途 |
|---|---|---|
| /batches | POST/GET | 提交与查询批作业 |
| /sessions | POST/GET | 创建交互式会话 |
| /sessions/{id}/statements | POST | 在会话中执行代码 |
| /batches/{id}/log | GET | 读取作业日志 |
会话探测
会话探测
curl -s http://livy01:8998/sessions | head -c 300 # 现有会话
curl -s http://livy01:8998/batches | head -c 300 # 批作业列表
ss -lntp | grep 8998 # 监听核对
# 提交示例(需权限): curl -X POST -H 'Content-Type: application/json' \
# -d '{"file":"hdfs:///app.jar"}' http://livy01:8998/batchesLivy 的会话会长期占用 YARN 资源:平台侧要设置空闲会话回收,否则残留会话会把队列吃满,表现为新作业一直排队。
认证应交给 Kerberos 或平台的统一鉴权:只靠网络隔离时,任何能访问 8998 的进程都能以集群身份运行代码。
批作业失败的原因多数在 Spark 侧:Livy 只负责提交与跟踪,日志要顺着 YARN 与应用日志继续往下看。
Livy 与 Spark 的版本兼容性要求较严:升级 Spark 前先核对官方兼容矩阵,否则会出现提交成功但会话创建失败的情况。
批作业与会话是两种资源模型:批作业跑完即释放,会话要显式关闭,平台侧最好把两者分队列管理,避免互相挤占。
提交入口的并发限制要显式配置:无上限时一个大促活动就能把集群提交队列打满,影响所有业务。