Flink Docker Application Mode 命令解析

Flink官方提供的 Docker 运行 Flink Application Mode 模式,逐句解读含义,并且给予操作实例:

以下是 Flink 官方提供的 Docker 命令,用于在 Application Mode 下运行 Flink Job(standalone-job 作为 JobManager,taskmanager 作为 TaskManager)。

1. JobManager 启动命令解析

docker run \--mount type=bind,src=/host/path/to/job/artifacts1,target=/opt/flink/usrlib/artifacts1 \  # 挂载本地文件到容器--mount type=bind,src=/host/path/to/job/artifacts2,target=/opt/flink/usrlib/artifacts2 \  # 挂载第二个文件(如依赖包)--rm \  # 容器退出后自动删除--env FLINK_PROPERTIES="${FLINK_PROPERTIES}" \  # 传递 Flink 配置--name=jobmanager \  # 容器名称--network flink-network \  # 使用 Docker 网络(需提前创建)flink:1.20.1-scala_2.12 standalone-job \  # 使用 Flink 镜像并启动 JobManager--job-classname com.job.ClassName \  # 指定主类[--job-id <job id>] \  # (可选)手动指定 Job ID[--fromSavepoint /path/to/savepoint [--allowNonRestoredState]] \  # (可选)从 Savepoint 恢复[job arguments]  # (可选)传递给 Job 的参数

2. TaskManager 启动命令解析

docker run \--mount type=bind,src=/host/path/to/job/artifacts1,target=/opt/flink/usrlib/artifacts1 \  # 挂载本地文件到容器--mount type=bind,src=/host/path/to/job/artifacts2,target=/opt/flink/usrlib/artifacts2 \  # 挂载第二个文件--env FLINK_PROPERTIES="${FLINK_PROPERTIES}" \  # 传递 Flink 配置flink:1.20.1-scala_2.12 taskmanager  # 启动 TaskManager

操作实例(基于举例的需求)

1. 准备环境

  • JAR 路径/home/xxx/projects/paimon-flink/target/paimon-flink-1.0-SNAPSHOT.jar

  • 主类com.dev.flink_nc_demo1

  • Flink 镜像flink:1.20.1-java11(需替换 scala_2.12 版本)

  • Docker 网络: 确保 flink-network 已创建(若没有,运行 docker network create flink-network

2. 启动 JobManager

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 \  # 挂载 JAR--rm \--env FLINK_PROPERTIES="jobmanager.rpc.address: jobmanager" \  # 直接指定 FLINK_PROPERTIES--name=jobmanager \--network flink-network \flink:1.20.1-java11 standalone-job \  # 使用 Java 11 镜像--job-classname com.dev.flink_nc_demo1  # 指定主类

说明

  • 由于你的 JAR 是单个文件,直接挂载到 /opt/flink/usrlib/ 下(Flink 默认加载该目录下的 JAR)。

  • FLINK_PROPERTIES 直接写死,避免依赖 Shell 变量。

3. 启动 TaskManager

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 \  # 挂载相同 JAR--env FLINK_PROPERTIES="jobmanager.rpc.address: jobmanager" \  # 必须与 JobManager 一致--network flink-network \  # 使用相同网络flink:1.20.1-java11 taskmanager

说明

  • TaskManager 需要访问 JobManager,因此 FLINK_PROPERTIES 必须包含 jobmanager.rpc.address: jobmanager(指向 JobManager 容器名)。

关键注意事项

  1. Docker 网络

    • JobManager 和 TaskManager 必须使用同一个网络(flink-network)。

    • 如果未创建,先运行:

      docker network create flink-network
  2. JAR 挂载

    • 如果 JAR 有额外依赖(如配置文件、Lib 目录),需额外挂载到 /opt/flink/usrlib/

  3. 日志查看

    • 查看 JobManager 日志:

      docker logs jobmanager
    • 查看 TaskManager 日志(需替换容器 ID):

      docker logs <taskmanager-container-id>
  4. 调试建议

    • 如果 Job 启动失败,可以进入容器检查文件是否挂载成功:

      docker exec -it jobmanager bash
      ls /opt/flink/usrlib/  # 确认 JAR 存在

完整示例(一键运行)

# 创建网络(如果尚未创建)
docker network create flink-network# 启动 JobManager
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 \--rm \--env FLINK_PROPERTIES="jobmanager.rpc.address: jobmanager" \--name=jobmanager \--network flink-network \flink:1.20.1-java11 standalone-job \--job-classname com.dev.flink_nc_demo1# 启动 TaskManager(另开终端)
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 \--env FLINK_PROPERTIES="jobmanager.rpc.address: jobmanager" \--network flink-network \flink:1.20.1-java11 taskmanager

这样, Flink Job 就会在 Docker 集群中以 Application Mode 运行!如果有问题,可以检查日志或调整挂载路径。

备注:

1、启动standalone是启动的job-manager,task-manager的启动需要另开终端。

2、log会打印在挂起的task-manager控制台,或者通过容器查看log

docker logs 28f9c444a3e8

3、由于

Flink Application cluster is a dedicated cluster which runs a single job. In this case, you deploy the cluster with the job as one step, thus, there is no extra job submission needed.

 所以运行该job的是standalone-job 模式(Application Mode)不会出现8081webui,该flink集群仅可以运行这一个job,不再接受提交其他任务。

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

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

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

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

4、任务完成,standalone-job启动的jobmanager自动退出,taskmanger需要手动ctrl c退出

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/77766.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

20250427 对话1: 何东山的宇宙起源理论

对话1: 何东山的宇宙起源理论 以下内容综述了何东山团队有关宇宙起源的主要理论成果、方法体系及其学术影响。 何东山团队基于惠勒-德威特方程&#xff08;Wheeler–DeWitt Equation, WDWE&#xff09;和德布罗意–玻姆量子轨道理论&#xff0c;推导出带有额外“量子势”项的…

Python实例题:ebay在线拍卖数据分析

目录 Python实例题 题目 实现思路 代码实现 代码解释 read_auction_data 函数&#xff1a; clean_auction_data 函数&#xff1a; exploratory_analysis 函数&#xff1a; visualize_auction_data 函数&#xff1a; 主程序&#xff1a; 运行思路 注意事项 Python实…

2025年具身智能科技研报

引言 本报告系统梳理了2025年具身智能领域的最新进展&#xff0c;基于国内外权威新闻源与行业研究报告&#xff0c;通过数据可视化与深度分析相结合的方式&#xff0c;呈现该领域多维发展态势。从技术突破层面看&#xff0c;多模态大模型的突破性进展为具身智能注入新动能&…

缓存与数据库一致性深度解析与解决方案

缓存与数据库一致性深度解析与解决方案 一、一致性问题本质与挑战 1. 核心矛盾分析 缓存与数据库一致性问题源于数据存储的异步性与分布性&#xff0c;核心挑战包括&#xff1a; 读写顺序不确定性&#xff1a;并发场景下写操作顺序可能被打乱&#xff08;如先写缓存后写数据…

npm如何安装pnpm

在 npm 中安装 pnpm 非常简单,你可以通过以下步骤完成: 1. 使用 npm 全局安装 pnpm 打开终端(命令行工具),运行以下命令: npm install -g pnpm2. 验证安装 安装完成后,可以检查 pnpm 的版本以确保安装成功: pnpm --version如果正确显示版本号(如 8.x.x),说明安…

【Java 数据结构】List,ArrayList与顺序表

目录 一. List 1.1 什么是List 1.2 List 的常见方法 1.3 List 的使用 二. 顺序表 2.1 什么是顺序表 2.2 实现自己的顺序表 2.2.1 接口实现 2.2.2 实现顺序表 三. ArrayList 3.1 ArrayList简介 3.2 ArrayList的三个构造方法 3.2.1 无参构造方法 3.2.2 带一个参数的…

18.第二阶段x64游戏实战-MFC列表框

免责声明&#xff1a;内容仅供学习参考&#xff0c;请合法利用知识&#xff0c;禁止进行违法犯罪活动&#xff01; 本次游戏没法给 内容参考于&#xff1a;微尘网络安全 上一个内容&#xff1a;17.第二阶段x64游戏实战-人工遍历二叉树结构 现在找到了附近npc列表&#xff0…

如何解决 Xcode 签名证书和 Provisioning Profile 过期问题

在 iOS 应用开发过程中&#xff0c;签名证书和 Provisioning Profile 是确保应用安全性和合法性的关键组件。然而&#xff0c;当这些证书或配置文件过期时&#xff0c;开发者可能会遇到编译或归档失败的问题。本文将详细介绍如何解决 Xcode 中“iOS Distribution”证书未找到和…

SpringBoot Actuator未授权访问漏洞的全面解析与解决方案

引言 SpringBoot Actuator 作为应用监控与管理的核心组件,为开发者提供了丰富的系统自省和运维能力。然而,其默认配置中可能存在的未授权访问漏洞,已成为企业安全防护的潜在风险。本文将从漏洞原理、影响范围、检测方法到解决方案,系统性地剖析该问题,并提供覆盖开发、运维…

gin框架学习笔记

Gin 是一个基于 Go 语言的高性能 Web 框架 gin下载 在已有的go项目直接终端输入 go get -u github.com/gin-gonic/gin hello world快速上手 package mainimport ("github.com/gin-gonic/gin" )func main() {router : gin.Default()router.GET("/", func…

linux中由于编译选项-D_OS64BIT导致的核心已转储问题

linux中由于编译选项-D_OS64BIT导致的核心已转储问题排查解决&#xff1a; 原因&#xff1a; a.so b.so a.so使用b.so 程序1 程序2 使用a.so 程序1运行正常&#xff0c;程序2启动后提示核心已转储。 程序1和程序2运行的代码都一致&#xff0c;只执行创建xApplication app&…

什么是ICSP编程

ICSP编程介绍 ICSP 编程&#xff08;In-Circuit Serial Programming&#xff09;&#xff0c;即“在线串行编程”&#xff0c;是一种通过 SPI 协议 直接对微控制器&#xff08;如 Arduino 的 ATmega328P&#xff09;进行编程的技术&#xff0c;无需移除芯片。它常用于以下场景…

基于Vue3和OpenLayers的WebGIS示例程序

笔记参考教程来源于B站UP主znlgis的视频合集&#xff1a;https://space.bilibili.com/161342702&#xff0c;直播使用的源码地址&#xff1a;https://github.com/OpenGisToolbox。 Demo合集分为5大部分&#xff0c;分别是&#xff1a;基础环境搭建、项目搭建、GeoServer Rest A…

UBUS 通信接口的使用——添加一个object对象(ubus call)

1&#xff0c;引入 ubus提供了一种多进程通信的机制。存在一个守护进程ubusd&#xff0c;所以进程都注册到ubusd&#xff0c;ubusd进行消息的接收、分发管理。 ubus对多线程支持的不好&#xff0c;例如在多个线程中去请求同一个服务&#xff0c;就有可能出现不可预知的结果。 …

【Python魔法方法(特殊方法)】

在 Python 中&#xff0c;许多运算符都可以进行重载&#xff0c;以下是一些常见运算符及其对应的魔法方法&#xff08;特殊方法&#xff09;&#xff1a; 算术运算符 加法 &#xff1a;__add__ 用于定义对象相加的行为。例如&#xff0c;当你对两个自定义类的实例使用 运算符…

(三十二)Android开发中AppCompatActivity和Activity之间的详细区别

在 Android 开发中&#xff0c;AppCompatActivity 和 Activity 是两个核心类&#xff0c;用于创建和管理应用程序的用户界面。尽管它们功能上有重叠&#xff0c;但它们之间存在显著的区别。本文将详细讲解 AppCompatActivity 和 Activity 的区别&#xff0c;并结合代码示例和具…

【 C++核心知识点面试准备:从内存管理到STL与模板 】

一、动态内存管理&#xff1a;new/delete与底层原理 核心问题1&#xff1a;new/delete vs malloc/free 区别对比&#xff1a; 特性new/deletemalloc/free类型安全自动推导类型&#xff0c;无需转型返回void*&#xff0c;需强制转型生命周期自动调用构造/析构函数需手动初始化…

软考高项(信息系统项目管理师)第 4 版全章节核心考点解析(第4版课程精华版)

一、核心输入输出速记体系&#xff08;力扬老师独家口诀&#xff09; &#xff08;一&#xff09;规划阶段万能输入&#xff08;4 要素&#xff09; 口诀&#xff1a;章程计划&#xff0c;组织事业 ✅ 精准对应&#xff08;ITTO 核心输入&#xff09;&#xff1a; 章程&#…

ASP.NET CORE部署IIS的三种方式

ASP.NET Core 部署方式对比 本文档对比了三种常见的 ASP.NET Core 应用&#xff08;如你的 DingTalkApproval 项目&#xff09;部署到 Windows 10 上 IIS 服务器的方式&#xff1a;dotnet publish&#xff08;手动部署&#xff09;、Web Deploy&#xff08;直接发布到 IIS&…

基于共享上下文和自主协作的 RD Agent 生态系统

在llmangentmcp这个框架中&#xff1a; LLM&#xff1a; 依然是智能体的“大脑”&#xff0c;赋予它们理解、推理、生成和规划的能力&#xff0c;并且也用于处理和利用共享上下文。Agent&#xff1a; 具备特定 R&D 职能的自主单元&#xff0c;它们感知共享上下文&#xff0…