Flink 運行時架構

Flink 運行時的組件

在這里插入圖片描述

  • 作業管理器(JobManager)
  • 資源管理器(ResourceManager)
  • 任務管理器(TaskManager)
  • 分發器(Dispatch)

JobManager

  • 控制一個應用程序執行的主進程,也就是說,每個應用程序都會被一個不同的 JobManager 所控制執行;
  • JobManager 會先接收到要執行的應用程序,這個應用程序,這個應用程序包括作業圖(JobGraph)、邏輯數據流圖(logical dataflow graph)和打包了所有類、庫和其他資源的JAR包;
  • JobManager 會把 JobGraph 轉換成一個物理層面的數據流圖,這個圖叫做執行圖(ExecutionGraph),包含了所有可以并發執行的任務;
  • JobManager 會向 ResourceManager 請求執行任務必要的資源,也就是 TaskManager 上的 slot 。一旦它獲取到了足夠的資源,就會將執行圖分發到真正運行它們的 TaskManager 上。而在運行過程中,JobManager 會負責所有需要中央協調的操作,比如所 checkpoint 的協調;

ResourceManager

  • 主要負責管理 TaskManager 和 slot;
  • Flink 為不同環境和資源管理工具提供了不同的 ResourceManager,比如Yarn、Mesos、K8s,以及 standalone部署;
  • 當 JobManager 申請 slot 資源時,ResourceManager 會將有空閑 slot 的 TaskManager 分配給 JobManager。如果 ResourceManager 沒有足夠的 slot 來滿足 JobManager 的請求,它還可以向資源提供平臺發起會話,以提供啟動 TaskManager 進程的容器;

TaskManager

  • Flink 中的工作進程。通常在 Flink 中會有多個 TaskManager 運行,每一個 TaskManager 都包含一定數量的 slot 。slot 的數量限制了 TaskManager 能夠執行的任務數量(并行度);
  • 啟動之后,TaskManager 會向 ResourceManager 注冊它的 slot ;收到 ResourceManager 的指令后,TaskManager 就會將一個或者多個 slot 提供給 JobManager 調用。JobManager 就可以向 slot 分配任務來執行了;
  • 在執行過程中,一個 TaskManager 可以跟其他運行同一應用程序的 TaskManager 交換數據;

Dispatcher

  • 可以跨作業運行,它為應用提交提供了 REST 接口;
  • 當一個應用被提交時,Dispatcher 就會啟動并將應用移交給一個 JobManager;
  • Dispatcher 也會啟動一個 Web UI,用來方便地展示和監控作業執行的信息;
  • Dispatcher 在架構中可能并不是必需的,這取決于應用提交的方式;

Flink 任務提交流程

在這里插入圖片描述

  1. 當程序執行 execute() 方法時,Client 會將程序編譯成一個 DAG(有向無環圖),這個圖被稱為 JobGraph ,JobGraph 描述了程序的數據流和操作;
  2. Dispatcher 將 JobGraph 提交給 JobManager;
  3. JobManager 接收到 JobGraph 后會將其解析,并創建一個 ExecutionGraph,ExecutionGraph 描述了如何在集群中并行執行 JobGraph 中定義的數據流;
  4. JobManager 根據 ExecutionGraph 的需求向 ResourceManager 請求資源;
  5. 一旦資源被分配,JobManager 會將作業分解成一系列的 Task ,然后將這些 Task 分配給集群中 TaskManager ,每個 TaskManager 執行一個或多個 Task;
  6. TaskManager 接收到 Task 后會在本地執行它們;
  7. TaskManager 會定期保存狀態快照,并向 JobManager 報告任務的進度和狀態;
  8. 當所有 Task 都成功執行完畢,JobManager 會標記作業為完成,并且釋放所有分配的資源;

以上是從一個較為高級的視角,來看應用中各組件的交互協作。如果部署的集群環境不同,其中一些步驟可以省略,或是有些組件會運行在同一個 JVM 進程中。

下面以具體部署到 Yarn 上為例:
在這里插入圖片描述

  1. Flink 提交任務后,Client 向 HDFS 上傳 Flink 的 Jar 包和配置;
  2. Client 向 ResourceManager 提交任務,ResourceManager 分配 Container 資源并通知對應的 NodeManager 啟動 ApplicationMaster,ApplicationMaster 啟動后加載 Flink 的 Jar 包和配置構建環境,然后啟動 JobManager;
  3. ApplicationMaster 向 ResouceManager 申請資源啟動 TaskManager;
  4. ResourceManager 分配 Container 資源后,由 ApplicationMaster 通知資源所在節點的 NodeManager 啟動 TaskManager;
  5. TaskManager 加載 Flink 的 Jar包和配置構建環境并啟動 TaskManager;
  6. TaskManager 啟動后向 JobManager 發送心跳包,并等待 JobManager 向其分配任務;

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/38918.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/38918.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/38918.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

LiveNVR監控流媒體Onvif/RTSP用戶手冊-概覽:CPU使用、存儲使用、帶寬使用、負載、內存使用、通道統計

LiveNVR監控流媒體Onvif/RTSP用戶手冊-概覽:CPU使用、存儲使用、帶寬使用、負載、內存使用、通道統計 1、概覽1.1、通道統計1.2、負載1.3、CPU使用1.4、存儲使用1.5、帶寬使用1.6、內存使用 2、RTSP/HLS/FLV/RTMP拉流Onvif流媒體服務 1、概覽 1.1、通道統計 顯示可用通道&…

構建Kylin Cube的藝術:最佳實踐指南

構建Kylin Cube的藝術:最佳實踐指南 Apache Kylin是一個開源的大數據分析引擎,專為大規模數據集提供快速的查詢能力。Kylin的核心是Cube,它是一種多維數據模型,能夠顯著提高查詢性能。然而,設計一個高效的Cube需要考慮…

Lipschitz 連續,絕對連續

1. Lipschitz 連續 經常聽到這個名詞, Lipschitz 連續比普通連續更強,不僅要求函數連續,還要求函數的梯度小于一個正實數。 在單變量實數函數上的定義可以是: 對于定義域內任意兩個 x 1 x_1 x1? and x 2 x_2 x2?, 存在一個…

云計算與生成式AI的技術盛宴!亞馬遜云科技深圳 Community Day 社區活動流程搶先知道!

小李哥最近要給大家分享7月7日在深圳的即將舉辦的亞馬遜云科技生成式AI社區活動Community Day ,干貨很多內容非常硬核,不僅有技術分享學習前沿AI技術,大家在現場還可以動手實踐沉浸式體驗大模型,另外參與現場活動還可以領取諸多精…

順序表(C語言詳細版)

1. 線性表 線性表(lina list)是n個具有相同特性的數據元素的有限序列。線性表是一種在實際中廣泛使用的數據結構,常見的線性表:順序表、鏈表、棧、隊列、字符串...... 線性表在邏輯上是線性結構,也就是說連續的一條直線。但是在物理結構上并…

一文匯總全球熱門新聞API

新聞API通過提供快速、準確和全面的新聞內容,已經成為現代社會不可或缺的一部分,對人們的生活、工作環境和科技發展產生了深遠的影響。新聞API使人們能夠快速獲取來自世界各地的實時新聞和信息,提高了信息的可訪問性。通過新聞API&#xff0c…

C++算法學習心得八.動態規劃算法(6)

1.最長遞增子序列(300題) 題目描述: 給你一個整數數組 nums ,找到其中最長嚴格遞增子序列的長度。 子序列是由數組派生而來的序列,刪除(或不刪除)數組中的元素而不改變其余元素的順序。例如&…

Redis分布式集群部署

目錄 一. 原理簡述 二. 集群配置??????? 2.1 環境準備 2.2 編譯安裝一個redis 2.3 創建集群 2.4 寫入數據測試 實驗一: 實驗二: 實驗三: 實驗四: 添加節點 自動分配槽位 提升節點為master: 實驗…

關于電商平臺分類||電商平臺商品分類接口|電商平臺商品數據

電商平臺 做電商,則要有電商平臺,一個為 企業 或 個人 提供網上交易洽談的平臺。. 企業電子商務平臺是建立在 Internet 網上進行商務活動的虛擬網絡空間和保障商務順利運營的管理環境;是協調、整合 信息流 、貨物流、 資金流 有序、關聯、高效…

會員信息一鍵同步!微盟與客如云聯手打造智能服務新體驗!

客戶介紹 某房地產開發有限公司,自成立以來一直深耕于房地產行業,憑借卓越的開發實力和前瞻性的市場眼光,成為了業界備受矚目的企業。多年來,該公司始終堅持“品質至上,客戶為先”的經營理念,致力于為客戶…

新一代Java框架Quarkus的性能優化與應用

新一代Java框架Quarkus的性能優化與應用 大家好,我是免費搭建查券返利機器人省錢賺傭金就用微賺淘客系統3.0的小編,也是冬天不穿秋褲,天冷也要風度的程序猿! 引言 隨著云原生技術的發展,Java開發者們對于構建輕量級、…

JavaScript 編程語言【 數據類型】過濾|排序|映射|迭代

文章目錄 將 border-left-width 轉換成 borderLeftWidth過濾范圍原位(in place)過濾范圍降序排列復制和排序數組創建一個可擴展的 calculator映射到 names映射到對象按年齡對用戶排序隨機排列數組獲取平均年齡數組去重從數組創建鍵(值&#x…

掌握React與TypeScript:從零開始繪制中國地圖

最近我需要使用reactts繪制一個界面,里面需要以中國地圖的形式展示區塊鏈從2019-2024年這五年的備案以及注銷情況,所以研究了一下這方面的工作,初步有了一些成果,所以現在做一些分享,希望對大家有幫助! 在這…

手把手搞定報名亞馬遜科技認證

引言 亞馬遜云科技認證考試為我們這些技術從業者提供了提升專業技能的機會。無論選擇線上還是線下考試,每種方式都有其獨特的優勢和挑戰。選擇合適的考試方式將幫助我們更好地展示自己的技術水平。以下是我對不同考試方式的優缺點介紹,以及各科目的考試…

【pytorch12】什么是梯度

說明 導數偏微分梯度 梯度:是一個向量,向量的每一個軸是每一個方向上的偏微分 梯度是有方向也有大小,梯度的方向代表函數在當前點的一個增長的方向,然后這個向量的長度代表了這個點增長的速率 藍色代表比較小的值,紅色…

七月論文審稿GPT第5版:拿我司七月的早期paper-7方面review數據集微調LLama 3

前言 llama 3出來后,為了通過paper-review的數據集微調3,有以下各種方式 不用任何框架 工具 技術,直接微調原生的llama 3,畢竟也有8k長度了 效果不期望有多高,純作為baseline通過PI,把llama 3的8K長度擴展…

基于Linux的云端垃圾分類助手

項目簡介 本項目旨在開發一個基于嵌入式系統的智能垃圾分類裝置。該裝置能夠通過串口通信、語音播報、網絡通信等多種方式,實現垃圾的自動識別和分類投放。系統采用多線程設計,確保各功能模塊高效并行工作。 項目功能 垃圾分類識別 系統使用攝像頭拍攝…

解密tar文件解壓的Java實現技術

解密tar文件解壓的Java實現技術 大家好,我是免費搭建查券返利機器人省錢賺傭金就用微賺淘客系統3.0的小編,也是冬天不穿秋褲,天冷也要風度的程序猿! 引言 在日常的軟件開發和系統管理中,經常會遇到需要解壓縮文件的…

代碼隨想三刷動態規劃篇5

代碼隨想三刷動態規劃篇5 377. 組合總和 Ⅳ題目代碼 57. 爬樓梯(第八期模擬筆試)題目代碼 322. 零錢兌換題目代碼 279. 完全平方數題目代碼 377. 組合總和 Ⅳ 題目 鏈接 代碼 class Solution {public int combinationSum4(int[] nums, int target) {…

SM2的簽名值byte數組與ASN.1互轉

ASN.1抽象語言標記(Abstract Syntax Notation One) ASN.1是一種 ISO/ITU-T 標準,描述了一種對數據進行表示、編碼、傳輸和解碼的數據格式,它提供了一整套正規的格式用于描述對象的結構。 一、該結構的應用場景 例如在做待簽名的數字信封時,數字信封使用ASN.1封裝,這個時…