Flink 调度

一.调度

Flink通过Task Slots来定义执行资源。每个TaskManager有一到task slot,每个task slot可以运行一条由多个并行task组成的流水线。这样一条流水线由多个连续的task组成,比如并行度n的MapFunction和并行度为n的ReduceFunction。需要注意的是Flink经常并发执行连续task,不仅在流式作业中到处都是,在批量作业中也很常见。

一个由数据源、MapFunction和ReduceFunction组成的Flink作业,其中数据源和MapFunction的并行度为4,ReduceFunction 的并行度为3。流水线由一系列的Source - Map - Reduce组成,运行在2个TaskManager组成集群上,每个TaskManager包含3个slot

图片

图片来源官网

Flink 内部通过 SlotSharingGroup 和 CoLocationGroup 来定义哪些 task 可以共享一个 slot, 哪些 task 必须严格放到同一个 slot。

二.JobManager

作业执行期间,JobManager会持续跟踪各个task,决定何时调度下一个或一组task,处理已完成task或执行失败的情况。

JobManager会接收到一个JobGraph,用来描述多个算子顶点(JobVertex)组成的数据流图,以及中间结果数据(IntermediateDataSet)。每个算子都有自己的可配置属性,比如并行度和运行的代码。

posted @ 2020-09-30 16:39  Dlimeng  阅读(15)  评论(0)    收藏  举报  来源