Flink Dag簡述

Flink Dag

1、流程簡圖

image

2、流程簡述

① API :

  • StreamAPI: 實時流 API
  • BatchApI : 批處理 API

② StreamGraph:

  • 根據(jù)用戶開發(fā)的 API 邏輯構建最原始的圖,用來表示程序的拓撲結構;
  • 具有兩個核心元素:
    • StreamNode:代表 Operator,具備一些基本屬性(并行度,入邊,出邊)
    • StreamEdge:連接 StreamNode 的邊

③ JobGraph:

  • Jobgraph是 StreamGraph經(jīng)過優(yōu)化之后形成的,是提交給 JobManager 的數(shù)據(jù)結構;
  • 主要的優(yōu)化是將一些直連模式Operator 進行 chain在一起形成一個節(jié)點,減少節(jié)點之間的傳輸消耗(直連模式的數(shù)據(jù)交換是基于內(nèi)存的,避免了 NIO)。
  • 具有三個核心元素:
    • JobVertex:經(jīng)過優(yōu)化后符合條件的多個StreamNode可能會chain在一起生成一個JobVertex,即一個JobVertex包含一個或多個operator,JobVertex的輸入是JobEdge,輸出是IntermediateDataSet。
    • IntermediateResult:表示JobVertex的輸出,即經(jīng)過operator處理產(chǎn)生的數(shù)據(jù)集。producer是JobVertex,consumer是JobEdge。
    • Jobedge:代表了job graph中的一條數(shù)據(jù)傳輸通道。source 是 IntermediateDataSet,target 是 JobVertex。即數(shù)據(jù)通過JobEdge由IntermediateDataSet傳遞給目標JobVertex。

④ ExecutionGraph:

  • ExecutionGraph是JobGraph的并行化版本,是調(diào)度層最核心的數(shù)據(jù)結構。
  • 具有五個核心節(jié)點:
    • ExecutionJobVertex:和JobGraph中的JobVertex一一對應。每一個ExecutionJobVertex都有和并發(fā)度一樣多的 ExecutionVertex。
    • ExecutionVertex:表示ExecutionJobVertex的其中一個并發(fā)子任務,輸入是ExecutionEdge,輸出是IntermediateResultPartition。
    • IntermediateResult:和JobGraph中的IntermediateDataSet一一對應。一個IntermediateResult包含多個IntermediateResultPartition,其個數(shù)等于該operator的并發(fā)度。
    • IntermediateResultPartition:表示ExecutionVertex的一個輸出分區(qū),producer是ExecutionVertex,consumer是若干個ExecutionEdge。
    • ExecutionEdge:表示ExecutionVertex的輸入,source是IntermediateResultPartition,target是ExecutionVertex。source和target都只能是一個。
    • Execution:是執(zhí)行一個 ExecutionVertex 的一次嘗試。當發(fā)生故障或者數(shù)據(jù)需要重算的情況下 ExecutionVertex 可能會有多個 ExecutionAttemptID。一個 Execution 通過 ExecutionAttemptID 來唯一標識。JM和TM之間關于 task 的部署和 task status 的更新都是通過 ExecutionAttemptID 來確定消息接受者。
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容