Flink 调度源码分析1:拓扑图创建与提交过程
Flink 调度源码分析2:调度过程
Flink 调度源码分析3:Slot 分配策略
Flink 分配任务到物理设备上(静态资源分配)过程中,需要将用户代码进行下面的转换:StreamGraph -> JobGraph -> ExecutionGraph -> 物理执行图
- StreamGraph: 是根据用户通过 Stream API 编写的代码生成的最初的图。用来表示程序的拓扑结构。
- JobGraph: StreamGraph经过优化后生成了 JobGraph,提交给 JobManager 的数据结构。主要的优化为:将多个符合条件的节点链接在一起作为一个节点,这样可以减少数据在节点之间流动所需要的序列化/反序列化的传输消耗。
- ExecutionGraph: JobManager 根据 JobGraph 生成的分布式执行图,是调度层最核心的数据结构。
- 物理执行图: JobManager 根据 ExecutionGraph 对 Job 进行调度后,在各个TaskManager 上部署 Task 后形成的“图”,并不是一个具体的数据结构。
以下是调度的一些步骤的分析。