視訊位址:https://www.bilibili.com/video/av52394455
文檔位址:http://note.youdao.com/noteshare?id=40b733ab556e73d1a62f6c5787c68c08&sub=239E0053AEB9462387419D600035BEDC
一、Flink 的整體架構如圖 1 所示。Flink 是可以運作在多種不同的環境中的,例如,它可以通過單程序多線程的方式直接運作,進而提供調試的能力。它也可以運作在 Yarn 或者 K8S 這種資源管理系統上面,也可以在各種雲環境中執行。
圖1.Flink 的整體架構,其中 Runtime 層對不同的執行環境提供了一套統一的分布式執行引擎。
二、流程
(1)AM:AppMaster分為三個部分:
a.Dispatcher:Dispatcher 負責接收使用者提供的作業,并且負責為這個新送出的作業拉起一個新的 JobManager 元件,一個送出的任務對應一個JobManager
b.RM:負責資源的管理,在整個 Flink 叢集中隻有一個RM
c.JobManager: 負責管理作業的執行,在一個 Flink 叢集中可能有多個作業同時執行,每個作業都有自己的 JobManager 元件
(2)作業流程:
a.分為兩種模式:類似于 Standalone 這種 Session 模式
1.AM 預先啟動
2.使用者送出作業到Client
3.Client程序編譯使用者代碼成JobGraph
b.另一種是 Per-Job 模式
1.使用者送出作業到Client
2. Client程序編譯使用者代碼成JobGraph
3.Yarn/Mesos 配置設定資源
4.加載AM
c.兩種模式,之後的流程數是一樣的:
5.Client 向AM的Dispathcer 送出jobGraph
6.Dispathcer 啟動JobManager組建
7. JobManager 向 RM 申請資源來啟動作業中具體的任務
8. RM着手配置設定資源(資源機關:Slot -- 槽:裡面是TaskManager以及任務所需要的資源,一個 Slot 一般可以執行一個具體的 Task,但在一些情況下也可以執行多個相關聯的 Task)
9. RM配置設定好資源,通知TM(每個Task都有一個TM),将哪個Slot配置設定給 對應的JobManager
10.JobManager 取得自己的Slot, 并向自己的Slot的TaskManager 注冊并送出Task
11.TM接收JobManager送出的job,開啟Task線程去執行Task
12.Task 啟動後就會開始進行預先指定的計算,并通過資料 Shuffle 子產品互相交換資料
圖2. Flink 叢集的基本結構。Flink Runtime 層采用了标準的 master-slave 架構。
(3) 兩種作業模式的差別
圖3. Flink Runtime 支援兩種作業執行的模式。
(4)資源配置設定
圖4. Flink 中資源管理功能各子產品互動關系。