Flink Docker Application Mode 命令解析 - 修改命令以启用 Web UI

默认情况下,Flink 的 Standalone 集群(包括 Docker 部署)会启动 Web UI ,默认端口是 8081。但你的命令使用的是 standalone-job 模式(Application Mode),它的行为有所不同:


1. standalone-job(Application Mode)是否提供 Web UI?

  • ❌ 默认情况下不会暴露 Web UI ,因为 standalone-job 是一个 一次性执行的 Job ,任务完成后容器会退出(尤其是加了 --rm 参数时)。

  • 如果想启用 Web UI,需要:

    1. 使用 jobmanager 角色(而非 standalone-job,这样 Flink 会以常驻服务运行。

    2. 显式映射 8081 端口 (通过 -p 8081:8081)。


2. 如何修改命令以启用 Web UI?

方法 1:改用 jobmanager + taskmanager 模式(推荐)

bash 复制代码
# 启动 JobManager(带 Web UI)
docker run -d \  # -d 表示后台运行
    --mount type=bind,src=/home/xxx/projects/paimon-flink/target/paimon-flink-1.0-SNAPSHOT.jar,target=/opt/flink/usrlib/paimon-flink.jar \
    --name=jobmanager \
    --network flink-network \
    -p 8081:8081 \  # 映射 Web UI 端口
    -e FLINK_PROPERTIES="jobmanager.rpc.address: jobmanager" \
    flink:1.20.1-java11 jobmanager  # 注意这里是 jobmanager,不是 standalone-job

# 启动 TaskManager
docker run -d \
    --mount type=bind,src=/home/xxx/projects/paimon-flink/target/paimon-flink-1.0-SNAPSHOT.jar,target=/opt/flink/usrlib/paimon-flink.jar \
    --network flink-network \
    -e FLINK_PROPERTIES="jobmanager.rpc.address: jobmanager" \
    flink:1.20.1-java11 taskmanager

# 提交 Job(通过 Web UI 或命令行)
docker exec jobmanager bash -c "
    /opt/flink/bin/flink run \
    -d \  # 后台运行
    -c com.dev.flink_nc_demo1 \
    /opt/flink/usrlib/paimon-flink.jar
"

访问 Web UI

浏览器打开 http://localhost:8081,即可看到 Flink Dashboard。


方法 2:临时调试(保留 standalone-job 但延长生命周期)

如果仍想用 standalone-job,可以通过以下方式临时查看 Web UI:

bash 复制代码
docker run \
    --mount type=bind,src=/home/xxx/projects/paimon-flink/target/paimon-flink-1.0-SNAPSHOT.jar,target=/opt/flink/usrlib/paimon-flink.jar \
    --name=jobmanager \
    --network flink-network \
    -p 8081:8081 \  # 映射端口
    -e FLINK_PROPERTIES="jobmanager.rpc.address: jobmanager; rest.port: 8081" \  # 显式指定 REST 端口
    flink:1.20.1-java11 standalone-job \
    --job-classname com.dev.flink_nc_demo1

注意

  • Web UI 仅在 Job 运行期间短暂可用(任务结束后容器退出)。

  • 不适合生产环境,仅建议调试使用。


3. 关键配置说明

配置项 作用 示例
jobmanager 角色 启动常驻服务,提供 Web UI flink:1.20.1-java11 jobmanager
-p 8081:8081 将容器端口映射到主机 访问 http://localhost:8081
rest.port 指定 REST 端口(可选) -e FLINK_PROPERTIES="rest.port: 8081"

4. 验证 Web UI 是否工作

  1. 检查容器是否运行:

    bash 复制代码
    docker ps

    应看到 jobmanagertaskmanager 容器处于 Up 状态。

  2. 访问 http://localhost:8081,如果看到 Flink Dashboard 表示成功。

  3. 如果无法访问:

    • 检查防火墙/安全组是否放行 8081 端口。

    • 查看 JobManager 日志:

      bash 复制代码
      docker logs jobmanager

      确认是否有 Web frontend listening at http://0.0.0.0:8081 日志。


总结

  • standalone-job 模式:无持久化 Web UI,适合一次性任务。

  • jobmanager 模式:提供 Web UI,适合长期运行的集群。

  • 生产建议 :使用方法 1(jobmanager + taskmanager),并通过 -p 8081:8081 暴露端口。

相关推荐
xiaofeichaichai20 分钟前
Webpack
前端·webpack·node.js
问心无愧051339 分钟前
ctf show web入门111
android·前端·笔记
唐某人丶1 小时前
模型越来越强,我们还需要 Agent 工程吗?—— 从价值重估到 Harness 实践
前端·agent·ai编程
智码看视界1 小时前
现代Web开发基础:全栈工程师的起航点
前端·后端·c5全栈
JS菌1 小时前
手写一个 AI Agent 全栈项目:从沙箱执行到子智能体的完整实现
前端·人工智能·后端
Bode_20021 小时前
基于大数据分析的全生命周期质量追溯质量评估体系落地方案
大数据·人工智能
serve the people2 小时前
Elasticsearch(1) could you tell me how to use es if i am a beginner
大数据·elasticsearch·jenkins
excel2 小时前
HLS TS 文件损坏的元凶:Git 提交与拉取
前端
一个儒雅随和的男子3 小时前
Elasticsearch出现深度分页问题怎么解决?
大数据·elasticsearch·搜索引擎