flink系列(1)-基礎組件
- 2019 年 10 月 4 日
- 筆記
flink,一個面向分散式數據流處理和批量數據處理的開源計算平台,它能夠基於同一個Flink運行時,提供支援流處理和批處理兩種類型應用的功能。和mapreduce,storm, spark有著類似的功能。
首先來看下大概圖

下面來說下具體的組件
JobManager,taskManager
JobManager:JobManager是Flink系統的協調者,它負責接收Flink Job,調度組成Job的多個Task的執行。同時,JobManager還負責收集Job的狀態資訊,並管理Flink集群中從節點 TaskManager。
JobManager
JobManager是Flink系統的協調者,也是一個獨立的actor,它負責接收Flink Job,調度組成Job的多個Task的執行。同時,JobManager還負責收集Job的狀態資訊,並管理Flink集群中從節點 TaskManager。JobManager所負責的各項管理功能,它接收到並處理的事件主要包括:
- RegisterTaskManager
在Flink集群啟動的時候,TaskManager會向JobManager註冊,如果註冊成功,則JobManager會向TaskManager回復消息AcknowledgeRegistration。
- SubmitJob
Flink程式內部通過Client向JobManager提交Flink Job,其中在消息SubmitJob中以JobGraph形式描述了Job的基本資訊。
- CancelJob
請求取消一個Flink Job的執行,CancelJob消息中包含了Job的ID,如果成功則返回消息CancellationSuccess,失敗則返回消息CancellationFailure。
- UpdateTaskExecutionState
TaskManager會向JobManager請求更新ExecutionGraph中的ExecutionVertex的狀態資訊,更新成功則返回true。
- RequestNextInputSplit
運行在TaskManager上面的Task,請求獲取下一個要處理的輸入Split,成功則返回NextInputSplit。
- JobStatusChanged
ExecutionGraph向JobManager發送該消息,用來表示Flink Job的狀態發生的變化,例如:RUNNING、CANCELING、FINISHED等。
TaskManager
TaskManager也是一個Actor,它是實際負責執行計算的Worker,在其上執行Flink Job的一組Task。每個TaskManager負責管理其所在節點上的資源資訊,如記憶體、磁碟、網路,在啟動的時候將資源的狀態向 JobManager彙報。TaskManager端可以分成兩個階段:
- 註冊階段
TaskManager會向JobManager註冊,發送RegisterTaskManager消息,等待JobManager返回AcknowledgeRegistration,然後TaskManager就可以進行初始化過程。
- 可操作階段
該階段TaskManager可以接收並處理與Task有關的消息,如SubmitTask、CancelTask、FailTask。如果 TaskManager無法連接到JobManager,這是TaskManager就失去了與JobManager的聯繫,會自動進入「註冊階段」,只 有完成註冊才能繼續處理Task相關的消息。
client
當用戶提交一個Flink程式時,會首先創建一個Client,該Client首先會對用戶提交的Flink程式進行預處理,並提交到Flink集群中處 理,所以Client需要從用戶提交的Flink程式配置中獲取JobManager的地址,並建立到JobManager的連接,將Flink Job提交給JobManager。Client會將用戶提交的Flink程式組裝一個JobGraph, 並且是以JobGraph的形式提交的。一個JobGraph是一個Flink Dataflow,它由多個JobVertex組成的DAG。其中,一個JobGraph包含了一個Flink程式的如下資訊:JobID、Job名稱、 配置資訊、一組JobVertex等。