Flink 在生成 StreamGraph 后,会根据其生成 JobGraph,并将其发送至服务器端进行 ExecutionGraph 的解析。
JobGraph 的生成入口方法为 StreamingJobGraphGenerator.createJobGraph()
。
源码解析:
- 设置启动模式: 将启动模式设置为所有节点在开始时立即启动 (
ScheduleMode.EAGER
)。 - 生成节点哈希 ID: 为每个节点生成唯一的哈希 ID,用于区分节点。
- 生成兼容性哈希: 为兼容性考虑,创建额外的哈希值。
- 生成 JobVertex 并进行链式连接: 遍历所有节点,如果是链的头节点,则生成一个 JobVertex;如果不是头节点,则将自身配置并入头节点,并将头节点与其出边相连。
- 设置输入边: 为 JobVertex 设置输入边,定义数据流方向。
- 设置 Slot 共享组: 为 JobVertex 设置 Slot 共享组,优化资源利用。