日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

flink运行原理_Flink运行架构剖析

發布時間:2023/12/10 编程问答 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 flink运行原理_Flink运行架构剖析 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
本文主要介紹 Flink Runtime 的作業執行的核心機制。首先介紹 Flink Runtime 的整體架構以及 Job 的基本執行流程,然后介紹Flink 的Standalone運行架構,最后對Flink on YARN的兩種模式進行了詳細剖析。

Flink Runtime作業執行流程分析

整體架構圖

Flink Runtime 層的主要架構如下圖所示,它展示了一個 Flink 集群的基本結構。整體來說,它采用了標準 master-slave 的結構,master負責管理整個集群中的資源和作業;TaskExecutor 則是 Slave,負責提供具體的資源并實際執行作業。

執行流程分析

  • 組件介紹

Application Master 部分包含了三個組件,即 Dispatcher、ResourceManager 和 JobManager。其中,Dispatcher 負責接收用戶提供的作業,并且負責為這個新提交的作業拉起一個新的 JobManager 組件。ResourceManager 負責資源的管理,在整個 Flink 集群中只有一個 ResourceManager。JobManager 負責管理作業的執行,在一個 Flink 集群中可能有多個作業同時執行,每個作業都有自己的 JobManager 組件。這三個組件都包含在 AppMaster 進程。 TaskManager主要負責執行具體的task任務,StateBackend 主要應用于狀態的checkpoint。 Cluster Manager是集群管理器,比如Standalone、YARN、K8s等。
  • 流程分析

1.當用戶提交作業的時候,提交腳本會首先啟動一個 Client進程負責作業的編譯與提交。它首先將用戶編寫的代碼編譯為一個 JobGraph,在這個過程,它還會進行一些檢查或優化等工作,例如判斷哪些 Operator 可以 Chain 到同一個 Task 中。然后,Client 將產生的 JobGraph 提交到集群中執行。此時有兩種情況,一種是類似于 Standalone 這種 Session 模式,AM 會預先啟動,此時 Client 直接與 Dispatcher 建立連接并提交作業即可。另一種是 Per-Job 模式,AM 不會預先啟動,此時 Client 將首先向資源管理系統 (如Yarn、K8S)申請資源來啟動 AM,然后再向 AM 中的 Dispatcher 提交作業。

2.當作業到 Dispatcher 后,Dispatcher 會首先啟動一個 JobManager 組件,然后 JobManager 會向 ResourceManager 申請資源來啟動作業中具體的任務。如果是Session模式,則TaskManager已經啟動了,就可以直接分配資源。如果是per-Job模式,ResourceManager 也需要首先向外部資源管理系統申請資源來啟動 TaskExecutor,然后等待 TaskExecutor 注冊相應資源后再繼續選擇空閑資源進程分配,JobManager 收到 TaskExecutor 注冊上來的 Slot 后,就可以實際提交 Task 了。

3.TaskExecutor 收到 JobManager 提交的 Task 之后,會啟動一個新的線程來執行該 Task。Task 啟動后就會開始進行預先指定的計算,并通過數據 Shuffle 模塊互相交換數據。

Flink Standalone運行架構

Flink Standalone運行架構如下圖所示:

Standalone模式需要先啟動Jobmanager和TaskManager進程,每一個作業都是自己的JobManager。 Client:任務提交,生成JobGraph

JobManager:調度Job,協調Task,通信,申請資源

TaskManager:具體任務執行,請求資源

Flink On YARN運行架構

關于YARN的基本架構原理,詳見另一篇我的另一篇文章YARN架構原理

Per-Job模式

Per-job 模式下整個 Flink 集群只執行單個作業,即每個作業會獨享 Dispatcher 和 ResourceManager 組件。此外,Per-job 模式下 AppMaster 和 TaskExecutor 都是按需申請的。因此,Per-job 模式更適合運行執行時間較長的大作業,這些作業對穩定性要求較高,并且對申請資源的時間不敏感。

1.獨享Dispatcher與ResourceManager

2.按需申請資源(TaskExecutor)

3.適合執行時間較長的大作業

Session模式

在 Session 模式下,Flink 預先啟動 AppMaster 以及一組 TaskExecutor,然后在整個集群的生命周期中會執行多個作業。可以看出,Session 模式更適合規模小,執行時間短的作業。

1.共享Dispatcher與ResourceManager

2.共享資源

3.適合小規模,執行時間較短的作業

總結

以上是生活随笔為你收集整理的flink运行原理_Flink运行架构剖析的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。