1、簡介網絡
Flink 運行時架構主要包含幾個部分:Client、JobManager(master節點)和TaskManger(slave節點)。架構
2、分工框架
JobManager:是主(master)節點,至關於YARN裏面的REsourceManager,生成環境中通常能夠作HA 高可用。JobManager會將任務進行拆分,調度到TaskManager上面執行。spa
TaskManager:是從節點(slave),TaskManager纔是真正實現task的部分。blog
Client提交做業到JobManager,就須要跟JobManager進行通訊,它使用Akka框架或者庫進行通訊,另外Client與JobManager進行數據交互,使用的是Netty框架。Akka通訊基於Actor System,Client能夠向JobManager發送指令,好比Submit job或者Cancel /update job。JobManager也能夠反饋信息給Client,好比status updates,Statistics和results。開發
Client提交給JobManager的是一個Job,而後JobManager將Job拆分紅task,提交給TaskManager(worker)。JobManager與TaskManager也是基於Akka進行通訊,JobManager發送指令,好比Deploy/Stop/Cancel Tasks或者觸發Checkpoint,反過來TaskManager也會跟JobManager通訊返回Task Status,Heartbeat(心跳),Statistics等。另外TaskManager之間的數據經過網絡進行傳輸,好比Data Stream作一些算子的操做,數據每每須要在TaskManager之間作數據傳輸。it
當Flink系統啓動時,首先啓動JobManager和一至多個TaskManager。JobManager負責協調Flink系統,TaskManager則是執行並行程序的worker。當系統以本地形式啓動時,一個JobManager和一個TaskManager會啓動在同一個JVM中。當一個程序被提交後,系統會建立一個Client來進行預處理,將程序轉變成一個並行數據流的形式,交給JobManager和TaskManager執行。ast