JobGraph的创建流程
Flink在StreamGraph的基础上生成JobGraph,并将其发送到服务器端进行ExecutionGraph解析。
JobGraph生成步骤:
- 入口方法:
StreamingJobGraphGenerator.createJobGraph()
- 设置启动模式:默认使用
ScheduleMode.EAGER
模式,所有节点同时启动。 - 生成节点哈希ID:使用
StreamGraphHasher
为每个节点生成唯一哈希ID。 - 处理节点链(Operator Chains):
- 遍历节点,识别出每个链的头节点。
- 将非头节点的配置合并到头节点,并将头节点与自身的出边连接。
- 无法进行链式操作的节点将被视为独立的JobVertex。
- 设置物理边(Edges):定义节点间的数据传输关系。
- 配置Slot共享组:优化资源分配,允许任务共享Slot。
核心方法解析:
setChaining()
: 负责处理节点链,将连续操作合并为单个JobVertex,以提高执行效率。setPhysicalEdges()
: 建立节点之间的连接,定义数据流向。setSlotSharingGroup()
: 配置Slot共享,实现资源优化。
通过以上步骤,Flink将逻辑执行计划转换为JobGraph,为后续的作业执行做好准备。