Apache StreamPark 2.1.7 常用 CLI 命令与工具详解
整理 Apache StreamPark 2.1.7 常用命令行工具用法,覆盖 streampark.sh 启停、BashJavaUtils 读配置、jps/netstat 校验、curl REST API 调用、mysql 元数据库操作。
Apache StreamPark 2.1.7 常用 CLI 命令与工具详解
目标:详解 Apache StreamPark 2.1.7 管理台的常用命令行工具——
bin/streampark.sh服务生命周期管理、BashJavaUtils读取配置、jps/netstat校验 JVM 与端口、curl调用 REST API、mysql客户端管理元数据库。所有命令与回显均为 Ubuntu 22.04.5 真实环境实测。
一、环境信息
- 操作系统:Ubuntu 22.04.5 LTS
- Apache StreamPark:2.1.7
- 安装目录:
/opt/streampark - 服务脚本:
/opt/streampark/bin/streampark.sh - 管理台端口:10000
- 元数据库:MySQL 8.0.46(库
streampark) - 示例账号:admin / q1w2e3r4(root 安装部署)
二、工具概览
| 工具 | 位置 | 用途 |
|---|---|---|
streampark.sh | /opt/streampark/bin/ | 启动/停止/重启/查看管理台服务 |
BashJavaUtils | /opt/streampark/lib/ 内置类 | 读取 config.yaml 生效值 |
jps | JDK 自带 | 查看 Java 进程及 JVM 参数生效值 |
netstat | net-tools 包 | 校验 10000 端口监听 |
curl | 系统自带 | 调用管理台 REST API(登录、用户、团队等) |
mysql | mysql-server 包 | 管理元数据库(初始化、改密、查表) |
三、前置条件
- StreamPark 2.1.7 已安装到
/opt/streampark并初始化元数据库(见《Apache StreamPark 2.1.7 安装指南》)。 - 已安装
openjdk-11-jdk-headless(含jps)、net-tools(含netstat)、mysql-server(含mysql客户端)。 - 命令行登录演示使用已改密账号
admin / q1w2e3r4。
四、工具详解
4.1 streampark.sh 服务管理命令
bin/streampark.sh 支持多种子命令,用错误参数触发可查看 usage:
/opt/streampark/bin/streampark.sh help
实测回显(官方 usage 原文):
[StreamPark] Usage: streampark.sh ( commands ... )
[StreamPark] commands:
[StreamPark] start $conf Start StreamPark with application config.
[StreamPark] stop Stop StreamPark
[StreamPark] start_docker start in managed runtime or k8s mode
[StreamPark] status StreamPark status
[StreamPark] restart $conf restart StreamPark with application config.
| 命令 | 说明 |
|---|---|
streampark.sh start | 后台启动服务(nohup),日志写到 /opt/streampark/logs/streampark.out |
streampark.sh stop | 停止服务 |
streampark.sh status | 查看运行状态 |
streampark.sh restart | 重启服务 |
streampark.sh start_docker | 前台运行模式(进程保持前台,配合外部托管) |
4.1.1 启动
streampark.sh 直接执行要求先设置 JAVA_HOME:
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64
export PATH=$JAVA_HOME/bin:$PATH
/opt/streampark/bin/streampark.sh start
实测回显(节选):
[StreamPark] WARN: HADOOP_HOME is undefined on your system env,please check it.
[StreamPark] JAVA_OPTS: -Xms256m -Xmx512m -Xmn128m -XX:HeapDumpPath=/opt/streampark/logs/dump.hprof -Xloggc:/opt/streampark/logs/gc.log --add-opens java.base/jdk.internal.loader=ALL-UNNAMED --add-opens jdk.zipfs/jdk.nio.zipfs=ALL-UNNAMED
[StreamPark] StreamPark start successful. pid: 5923
⚠️
HADOOP_HOME is undefined仅为告警,纯 Flink/本地模式可忽略;streampark.sh start为后台启动,systemd 托管时对应Type=forking。
4.1.2 状态
/opt/streampark/bin/streampark.sh status
实测回显(运行中):
[StreamPark] StreamPark is running pid is: 5923
4.1.3 停止
/opt/streampark/bin/streampark.sh stop
实测回显:
[StreamPark] StreamPark stopping with the PID: 5231
[StreamPark] StreamPark stopped.
⚠️
status依赖 pid 文件,JVM 崩溃后可能误报 running;排查以日志/opt/streampark/logs/streampark.out+ 端口监听为准(见 4.3)。
4.2 BashJavaUtils 读取配置
管理台内置工具类 org.apache.streampark.console.base.util.BashJavaUtils,脚本内部用它读取 YAML 键值(如健康检查取 server.port)。用法:--get_yaml <key> <config.yaml>:
/usr/lib/jvm/java-11-openjdk-amd64/bin/java -cp "/opt/streampark/lib/*" \
org.apache.streampark.console.base.util.BashJavaUtils --get_yaml "server.port" /opt/streampark/conf/config.yaml
实测回显:
10000
用法说明:
--get_yaml的第一个参数是config.yaml中的键路径,支持多级键(如server.session.ttl、streampark.workspace.local);实际值以cat /opt/streampark/conf/config.yaml为准。
4.3 端口与 JVM 校验工具
4.3.1 校验 10000 端口监听
netstat -tlnp | grep 10000
实测回显:
tcp6 0 0 :::10000 :::* LISTEN 5923/java
4.3.2 校验 JVM 堆参数生效值
bin/jvm_opts.sh 中设置 -Xms256m -Xmx512m -Xmn128m 后,用 jps -v 核对:
jps -v | grep StreamParkConsoleBootstrap
实测回显(核对 JVM 堆生效的关键参数):
5923 StreamParkConsoleBootstrap -Xms256m -Xmx512m -Xmn128m -XX:+ExitOnOutOfMemoryError -XX:+HeapDumpOnOutOfMemoryError -XX:+IgnoreUnrecognizedVMOptions -XX:+UseGCLogFileRotation -Xloggc:/opt/streampark/logs/gc.log
jps -v会打印完整 classpath,此处摘录核对-Xms256m -Xmx512m -Xmn128m。
4.4 curl 调用 REST API
管理台以 HTTP 对外提供服务,登录与业务接口均为 POST。登录接口必须用表单编码并携带 loginType=PASSWORD(JSON body 方式会静默失败,见常见问题)。
4.4.1 登录并获取 token
curl -s -X POST http://localhost:10000/passport/signin \
-d "username=admin&password=q1w2e3r4&loginType=PASSWORD"
实测回显(关键字段):
{"data":{"user":{"userId":"100000","username":"admin","password":"********","userType":"ADMIN","loginType":"PASSWORD","status":"1","createTime":"2026-10-12 16:13:51","lastTeamId":"100000"},"permissions":[null,"user:view","user:add"],"token":"(登录成功后返回的 JWT,此处省略原文)","expire":"2026-10-12 18:50:52"}}
返回 data.token 即为登录令牌,后续接口放在 Authorization 请求头(无 Bearer 前缀):
TOKEN=$(curl -s -X POST http://localhost:10000/passport/signin \
-d "username=admin&password=q1w2e3r4&loginType=PASSWORD" | grep -o '"token":"[^"]*"' | head -1 | sed 's/"token":"//;s/"$//')
4.4.2 用户列表
curl -s -X POST http://localhost:10000/user/list \
-H "Authorization: $TOKEN" -H "Content-Type: application/json" -d "{}"
实测回显:
{"code":"200","data":{"records":[{"userId":"100000","username":"admin","password":null,"userType":"ADMIN","loginType":"PASSWORD","status":"1","createTime":"2026-10-12 16:13:51","nickName":"","lastTeamId":null}],"total":"1","size":"10","current":"1","pages":"1"},"status":"success"}
4.4.3 团队列表
curl -s -X POST http://localhost:10000/team/list \
-H "Authorization: $TOKEN" -H "Content-Type: application/json" -d "{}"
实测回显:
{"code":"200","data":{"records":[{"id":"100000","teamName":"default","description":null,"createTime":"2026-10-12 16:13:51","modifyTime":"2026-10-12 16:13:51"}],"total":"1","size":"10","current":"1","pages":"1"},"status":"success"}
4.4.4 Flink 环境列表
curl -s -X POST http://localhost:10000/flink/env/list \
-H "Authorization: $TOKEN" -H "Content-Type: application/json" -d "{}"
实测回显(尚未注册 Flink 环境时):
{"code":"200","data":[],"status":"success"}
前端涉及的主要 API 路径:
/passport/signin、/passport/signout、/user/list、/user/post、/user/update、/user/delete、/team/list、/team/post、/flink/env/list、/flink/env/create、/flink/app、/flink/project、/token/list等(从管理台前端 JS 提取,供脚本化集成参考)。
4.5 mysql 客户端管理元数据库
元数据存于 MySQL 库 streampark(24 张表),常用运维操作:
4.5.1 查看表清单
mysql -uroot -pq1w2e3r4 -e "USE streampark; SHOW TABLES;"
实测回显(表清单节选):
t_access_token
t_alert_config
t_app_backup
t_app_build_pipe
t_external_link
(此处省略中间 17 张表)
t_user
t_variable
t_yarn_queue
4.5.2 查看默认用户
mysql -uroot -pq1w2e3r4 -e "USE streampark; SELECT user_id,username,user_type,status FROM t_user;"
实测回显:
user_id username user_type status
100000 admin 1 1
4.5.3 修改 admin 密码
StreamPark 密码为 Shiro Sha256Hash(salt, password, 1024) 迭代哈希,SQL 改密必须同时更新 salt 与 password 两列(本环境统一示例口令 q1w2e3r4):
USE streampark;
UPDATE t_user
SET salt = 'vg56lrowv354ch03dieq0byivv',
password = '3d048bd6792acb4bfd6a80fa425922d657bc5ec059c7536c175889bfe11e49c6'
WHERE username = 'admin';
若只改一列或哈希算法不匹配,登录接口返回
{"code":0,"status":"success"}但无data(静默失败)。
五、注意事项
- 登录接口必须表单编码 +
loginType=PASSWORD;带 token 的接口Authorization头直接放 token,不加 Bearer 前缀。 streampark.sh status有 pid 残留误报风险,关键判断以日志 + 端口为准。jps -v输出包含完整 classpath,核对 JVM 堆只看-Xms/-Xmx/-Xmn字段。- 每条命令逐个单独执行,避免在多个 live 服务上用循环批量操作。
六、常见问题
6.1 streampark.sh 报 JAVA_HOME/JRE_HOME 未定义
错误回显:
Neither the JAVA_HOME nor the JRE_HOME environment variable is defined
At least one of these environment variable is needed to run this program
解决:执行前 export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64;systemd 托管时在单元文件 Environment= 中注入。
6.2 登录返回 {"code":0,"status":"success"} 但没有 data
原因:登录接口绑定表单参数,用 JSON body 提交时 Spring 绑定不到,静默失败(非密码错误,错误密码同样是该回显)。
解决:改用 curl -d "username=admin&password=q1w2e3r4&loginType=PASSWORD" 表单编码方式。
6.3 带 token 调用接口返回 404 或未授权
原因:Authorization 头加了 Bearer 前缀——StreamPark 的 authenticationScheme 为空,只接受裸 token。
解决:-H "Authorization: $TOKEN",不要加 Bearer。
6.4 status 显示 running 但 10000 未监听
定位:pid 文件残留误报,JVM 已退出。
解决:查 /opt/streampark/logs/streampark.out 找真实异常(如 MySQL 驱动缺失),netstat -tlnp | grep 10000 复核后重启。
6.5 BashJavaUtils 报 ClassNotFound
解决:确保 -cp "/opt/streampark/lib/*" 引号完整、当前用户可读 lib/ 目录,且 JDK 为 11;该工具类随管理台 jar 打包在 lib 下。
七、参考链接
- Apache StreamPark 官网:https://streampark.apache.org/
- 官方文档:https://streampark.apache.org/docs/
- GitHub:https://github.com/apache/streampark