天天看點

Flink進階(一)-- Flink整體架構以及 Job 的基本執行流程

視訊位址: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 中資源管理功能各子產品互動關系。

繼續閱讀