1. 程式人生 > >【雲星資料---Apache Flink實戰系列(精品版)】:Apache Flink高階特性與高階應用004-Flink的作業排程情況001

【雲星資料---Apache Flink實戰系列(精品版)】:Apache Flink高階特性與高階應用004-Flink的作業排程情況001

一、作業(Job)和排程(Scheduling)

1.排程(Scheduling)

1.Flink叢集一般有一個或多個TaskManager,每個TaskManager有一個或多個slot來區分不同的資源(當前是記憶體)
2.每個slot都可以執行整個pipeline,這些pipeline中的並行任務都可以並行的執行在各個slot之中
3.可通過SlotSharingGroup和CoLocationGroup來定義任務在共享任務槽的行為,可定義為自由共享,
  或是嚴格定義某些任務部署到同一個任務槽中。

這裡寫圖片描述

1.本例中有2個TaskManager,每個TaskManager劃分了3
個slot,一共6個slot。 2.本例是一個source-map-reduce的pipeline例子,source並行度為4map並行度為4,reduce並行度為3.最大並行度為4. 3.圖中可見TaskManager1使用2個slot,分別執行藍,黃2個subtask的pipeline。 4.圖中可見TaskManager2使用2個slot,分別執行紅,橙2個subtask的pipeline。

2.JobManager資料結構(JobManager Data Structures)

這裡寫圖片描述

1.client將program解析成dataflow,並將dataflow的描述資訊JobGraph提交給JobManager。
JobGraph包含Operator(JobVertex)
,IntermediateResult(IntermediateDataSet),並行度,執行程式碼,附加的庫等資訊。 2.JobManager將JobGraph並行化處理成ExecutionGraph。 Operator(JobVertex)處理成包含多個Subtask(ExecutionVertex)的ExecutionJobVertex。 IntermediateResult(IntermediateDataSet)並行化成含多個IntermediateResultPartition的IntermediateResult. 也就是 任務並行化: JobVertex->ExecutionJobVertex(含多個ExecutionVertex)
資料並行化: IntermediateResult->IntermediateResult(含多個IntermediateResultPartition)