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

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

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

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

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

五、JobGraph


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