Apache StreamPark 2.1.7 常用 CLI 命令与工具详解

整理 Apache StreamPark 2.1.7 常用命令行工具用法,覆盖 streampark.sh 启停、BashJavaUtils 读配置、jps/netstat 校验、curl REST API 调用、mysql 元数据库操作。

Apache StreamParkApache StreamPark2026/10/13

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 生效值
jpsJDK 自带查看 Java 进程及 JVM 参数生效值
netstatnet-tools 包校验 10000 端口监听
curl系统自带调用管理台 REST API(登录、用户、团队等)
mysqlmysql-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"}
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 下。

七、参考链接