《大數據技術叢書 Flink原理、實戰與性能優化》—1.4.2 基本架構圖
1.4.2 基本架構圖
Flink系統架構設計如圖1-6所示,可以看出Flink整個系統主要由兩個組件組成,分別為JobManager和TaskManager,Flink架構也遵循Master-Slave架構設計原則,JobManager為Master節點,TaskManager為Worker(Slave)節點。所有組件之間的通信都是借助于Akka Framework,包括任務的狀態以及Checkpoint觸發等信息。
(1)Client客戶端
客戶端負責將任務提交到集群,與JobManager構建Akka連接,然后將任務提交到JobManager,通過和JobManager之間進行交互獲取任務執行狀態。客戶端提交任務可以采用CLI方式或者通過使用Flink WebUI提交,也可以在應用程序中指定JobManager的RPC網絡端口構建ExecutionEnvironment提交Flink應用。
圖1-6 Flink基本架構圖
(2)JobManager
JobManager負責整個Flink集群任務的調度以及資源的管理,從客戶端中獲取提交的應用,然后根據集群中TaskManager上TaskSlot的使用情況,為提交的應用分配相應的TaskSlots資源并命令TaskManger啟動從客戶端中獲取的應用。JobManager相當于整個集群的Master節點,且整個集群中有且僅有一個活躍的JobManager,負責整個集群的任務管理和資源管理。JobManager和TaskManager之間通過Actor System進行通信,獲取任務執行的情況并通過Actor System將應用的任務執行情況發送給客戶端。同時在任務執行過程中,Flink JobManager會觸發Checkpoints操作,每個TaskManager節點收到Checkpoint觸發指令后,完成Checkpoint操作,所有的Checkpoint協調過程都是在Flink JobManager中完成。當任務完成后,Flink會將任務執行的信息反饋給客戶端,并且釋放掉TaskManager中的資源以供下一次提交任務使用。
(3)TaskManager
TaskManager相當于整個集群的Slave節點,負責具體的任務執行和對應任務在每個節點上的資源申請與管理。客戶端通過將編寫好的Flink應用編譯打包,提交到JobManager,然后JobManager會根據已經注冊在JobManager中TaskManager的資源情況,將任務分配給有資源的TaskManager節點,然后啟動并運行任務。TaskManager從JobManager接收需要部署的任務,然后使用Slot資源啟動Task,建立數據接入的網絡連接,接收數據并開始數據處理。同時TaskManager之間的數據交互都是通過數據流的方式進行的。
可以看出,Flink的任務運行其實是采用多線程的方式,這和MapReduce多JVM進程的方式有很大的區別Fink能夠極大提高CPU使用效率,在多個任務和Task之間通過TaskSlot方式共享系統資源,每個TaskManager中通過管理多個TaskSlot資源池進行對資源進行有效管理。
大數據
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。