Flink執行圖

Flink的代碼編寫流程爲env->source->transform->sink,基本所有的代碼都是大致按照圖1的流程進行代碼編寫,當然中間也會有一些封裝之類的。

  Flink代碼寫好後,它的任務調度執行圖按照生成順序分爲:邏輯流圖(StreamGraph)->作業圖(JobGraph)->執行圖(ExecutionGraph)->物理圖(Physical Graph),總共四層。

邏輯流圖:根據用戶通過DataStreamAPI編寫的代碼生成的最初的DAG圖,用來表示程序的拓撲結構。這一步一般在客戶端完成。
作業圖:StreamGraph經過優化後生成的就是作業圖(JobGraph),這是提交給JobManager 的數據結構,確定了當前作業中所有任務的劃分。主要的優化爲: 將多個符合條件的節點鏈接在一起合併成一個任務節點,形成算子鏈,這樣可以減少數據交換的消耗。JobGraph一般也是在客戶端生成的,在作業提交時傳遞給JobMaster。
執行圖:JobMaster收到JobGraph後,會根據它來生成執行圖(ExecutionGraph)。ExecutionGraph 是JobGraph的並行化版本,是調度層最核心的數據結構。
物理圖:JobMaster 生成執行圖後,會將它分發給 TaskManager;各個 TaskManager 會根據執行圖部署任務,最終的物理執行過程也會形成一張“圖”,一般就叫作物理圖(Physical Graph)。這只是具體執行層面的圖,並不是一個具體的數據結構。

  

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章