Flink 核心組件原理 多圖剖析
一、Flink 整體架構(gòu)

接受 application,包含 StreamGraph(DAG),JobGraph(優(yōu)化過的)和 JAR,將 JobGraph 轉(zhuǎn)換為 Execution Graph 申請資源,調(diào)度任務(wù),執(zhí)行任務(wù),保存作業(yè)的元數(shù)據(jù),如Checkpoint 協(xié)調(diào)各個 Task 的 Checkpoint。
二、JobManager 內(nèi)部組成原理

負(fù)責(zé) Checkpoint 的協(xié)調(diào),通過定時做快照的方式記錄任務(wù)狀態(tài)信息; Job Dispatch 負(fù)責(zé)接收客戶端發(fā)送過來的 JobGraph 對象(DAG),并且在內(nèi)部生成 ExecutionGraph(物理執(zhí)行圖); 將作業(yè)拆分成 Task,部署到不同的 TaskManager 上去執(zhí)行;ctorSystem 是 基于 akka 實現(xiàn)的一個通信模塊,負(fù)責(zé)節(jié)點之間的通信,如 Client 和 JobManager 之間,JobManager 和 TaskManager 之間的通信; 負(fù)責(zé)資源管理,對于不同的部署模式,有相應(yīng)的 ResourceManager 的實現(xiàn); TaskManager 啟動時,會向 JobManager 注冊自己,并時刻和 JobManager 保持心跳。
三、TaskManager 內(nèi)部原理

TaskManager 是作為一個虛擬機進程存在,TaskManager 啟動的時候,會向 JobManager 注冊自己; JobManager 提交作業(yè)的時候,TaskManager 會啟動 Task 線程將 Job 運行起來,TaskManager 里面有線程池負(fù)責(zé)線程的調(diào)度執(zhí)行。 在 Flink 內(nèi)部也會有類似 Spark 或者 MapReduce 節(jié)點 shuffle 的過程,比如進行了一個 GroupByKey 的操作,就會涉及到數(shù)據(jù)的交互;Network Manager 是基于 Netty 實現(xiàn)的一個數(shù)據(jù)傳輸模塊; 而節(jié)點和節(jié)點之間的通信是基于 akka 實現(xiàn)的 Actor System,來進行遠(yuǎn)程的 rpc 通信; Memory Management 是內(nèi)存管理模塊,當(dāng)數(shù)據(jù)進來時,負(fù)責(zé)申請內(nèi)存來運行任務(wù)。
TaskManager?如何負(fù)責(zé)數(shù)據(jù)傳輸

四、Client 內(nèi)部原理

五、JobGraph


--end--
掃描下方二維碼 添加好友,備注【交流】 可私聊交流,也可進資源豐富學(xué)習(xí)群
評論
圖片
表情
