JobGraph的创建流程

Flink在StreamGraph的基础上生成JobGraph,并将其发送到服务器端进行ExecutionGraph解析。

JobGraph生成步骤:

  1. 入口方法:StreamingJobGraphGenerator.createJobGraph()
  2. 设置启动模式:默认使用ScheduleMode.EAGER模式,所有节点同时启动。
  3. 生成节点哈希ID:使用StreamGraphHasher为每个节点生成唯一哈希ID。
  4. 处理节点链(Operator Chains):
    • 遍历节点,识别出每个链的头节点。
    • 将非头节点的配置合并到头节点,并将头节点与自身的出边连接。
    • 无法进行链式操作的节点将被视为独立的JobVertex。
  5. 设置物理边(Edges):定义节点间的数据传输关系。
  6. 配置Slot共享组:优化资源分配,允许任务共享Slot。

核心方法解析:

  • setChaining() 负责处理节点链,将连续操作合并为单个JobVertex,以提高执行效率。
  • setPhysicalEdges() 建立节点之间的连接,定义数据流向。
  • setSlotSharingGroup() 配置Slot共享,实现资源优化。

通过以上步骤,Flink将逻辑执行计划转换为JobGraph,为后续的作业执行做好准备。