Application 命令行
bin/seatunnel-application.sh 是 Application Mode 的唯一入口,只提供三个操作。三者都面向同一个
外部资源平台并使用一致的部署选项,因此 status、cancel 看到的正是 submit 创建的
application。
命令格式
bin/seatunnel-application.sh submit -t <target> [-a application.config] [-Dkey=value ...] [-c job.conf]
bin/seatunnel-application.sh status -t <target> --id APPLICATION_ID -a application.config [--wait] \
[--wait-timeout <ms>] [--wait-interval <ms>]
bin/seatunnel-application.sh cancel -t <target> --id APPLICATION_ID -a application.config
内置帮助可以列出全部参数:
bin/seatunnel-application.sh -h
Usage: seatunnel-application.sh [options] submit | status | cancel
Options:
-a, --application-config Optional HOCON deployment file, e.g.
application.config (not the job file)
-c, --config SeaTunnel job configuration file (required for
submit unless the provider supplies it, for
example kubernetes.job-config-file)
-h, --help Show the usage message
--id Platform application ID (required for
status/cancel)
--job-id Optional native Zeta job ID for submit
--restore-job-id Historical Zeta job ID whose latest checkpoint
restores this new application
* -t, --target External resource platform: kubernetes
--wait Wait for completion (submit/status only; default:
return immediately) (default: false)
--wait-timeout Maximum time in milliseconds that --wait polls for
a terminal status before failing with the last
observed status; 0 waits indefinitely (default: 0)
--wait-interval Status poll interval in milliseconds while --wait
blocks (default: 500)
-D Override a non-sensitive deployment option:
-Dkey=value (syntax: -Dkey=value) (default: {})
参数
| 参数 | 适用操作 | 说明 |
|---|---|---|
submit / status / cancel | 全部 | 操作类型,位于第一个位置参数 |
-t、--target | 全部 | 运行 application 的资源平台 |
-c、--config | submit | SeaTunnel 作业配置文件;作业由平台提供(如挂载的 job.conf)时可省略 |
-a、--application-config | 全部 | 包含公共选项和平台选项的可选部署文件;也可通过 -D 提供选项 |
-Dkey=value | 全部 | 覆盖单个非敏感的 application.* / kubernetes.* 部署选项(例如 -Dapplication.worker-count=4),可重复;作业 ${...} 变量在 Pod 内解析,不在提交机替换 |
--id | status、cancel | submit 打印的平台 application ID |
--wait | submit、status | 轮询直到终态 |
--wait-timeout <ms> | submit、status | --wait 等待终态的最长时间(毫秒),超时后带最后状态报错;默认 0 表示一直等待。需配合 --wait |
--wait-interval <ms> | submit、status | --wait 的状态轮询间隔(毫秒),默认 500。需配合 --wait |
--job-id | submit | 指定原生 Zeta 作业 ID,不指定时自动生成 |
--restore-job-id | submit | 用该作业 ID 的最新 checkpoint 恢复本次 application |
操作行为
| 操作 | 做什么 | 结果 |
|---|---|---|
submit | 完成作业本地化,在平台上创建 application 并启动 | 打印 application ID 与原生作业 ID |
status | 读取平台状态并映射为 ApplicationStatus | 打印 application ID 与状态;普通查询成功时返回 0;带 --wait 时遵循等待退出码规则 |
cancel | 删除 application 及其自有资源 | 打印 application ID 与取消结果 |
submit 立即返回
submit 在平台接受并启动 application 后立即返回,镜像拉取、准入和调度慢都不会让命令失败;
需要终态时加 --wait 在同一命令内等待:
bin/seatunnel-application.sh submit -t <target> -a application.config --wait
作业可以来自 -c,也可以来自平台挂载到 application 内的文件(例如
kubernetes.job-config-file);两者都没有的提交会在创建第一个资源之前被拒绝。写成 ${VAR}
的值在运行中的 application 内解析,不在提交机解析,因此可以通过环境变量注入平台管理的
凭据。
通过 -D 提供所需部署选项时,可以省略部署文件(-a)。两者同时提供时,-D 覆盖文件值。
平台配置校验仍然生效:省略 -a 不代表不完整的部署配置可以提交成功。
状态与等待
status 默认只读一次快照;加 --wait 后持续轮询直到终态。--wait-timeout 可以限制轮询时长,
超时后带最后状态报错退出;默认 0 表示一直等待,与 attached 客户端语义一致。--wait-interval
控制轮询间隔。平台无关的状态定义如下:
| 状态 | 含义 |
|---|---|
CREATED | 平台已接受提交,尚未启动控制面 |
DEPLOYING | 平台正在准备控制面 |
RUNNING | application 正在运行,Worker 或作业可能仍在启动 |
SUCCEEDED | 作业成功结束 |
FAILED | 启动、执行或可上报的清理失败 |
CANCELED | 平台报告已取消 |
UNKNOWN | 已知 application 的平台状态暂时无法映射 |
SUCCEEDED、FAILED、CANCELED 为终态,--wait 在终态停止;平台无法确定 application
结果时(UNKNOWN)也会停止。status --wait 和 submit --wait 在 FAILED 时退出码为 1,
在 UNKNOWN 时退出码为 2,表示无法确定成功或失败,而不是认定应用失败。
SUCCEEDED 和 CANCELED 仍返回 0。不带 --wait 的 status 打印快照后返回 0,
包括 FAILED 和 UNKNOWN;查询异常仍以非零码退出。不要把所有非零退出码都当成应用失败:
if bin/seatunnel-application.sh status -t <target> --id "$APP_ID" -a application.config --wait; then
result=0
else
result=$?
fi
case "$result" in
0) echo "application status reported; inspect the printed status" ;;
2) echo "application $APP_ID outcome is unknown" ;;
*) echo "application failed or the command could not complete (exit $result)" ;;
esac
cancel
cancel 请求平台移除 application:自有资源随之删除,SeaTunnel 之外管理的对象不受影响。已取消
或已完成的 application 能保留多久,取决于平台自身的保留策略。
各操作在具体平台上的行为见对应平台指南。