【雲星資料---Apache Flink實戰系列(精品版)】:Apache Flink高階特性與高階應用004-Flink的作業排程情況001
阿新 • • 發佈:2019-02-02
一、作業(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並行度為4,map並行度為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)