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、由于

A?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.pswp.cn/web/77766.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/77766.shtml
英文地址,請注明出處:http://en.pswp.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…