Flink 在生成 StreamGraph 后,会根据其生成 JobGraph,并将其发送至服务器端进行 ExecutionGraph 的解析。

JobGraph 的生成入口方法为 StreamingJobGraphGenerator.createJobGraph()

源码解析:

  1. 设置启动模式: 将启动模式设置为所有节点在开始时立即启动 (ScheduleMode.EAGER)。
  2. 生成节点哈希 ID: 为每个节点生成唯一的哈希 ID,用于区分节点。
  3. 生成兼容性哈希: 为兼容性考虑,创建额外的哈希值。
  4. 生成 JobVertex 并进行链式连接: 遍历所有节点,如果是链的头节点,则生成一个 JobVertex;如果不是头节点,则将自身配置并入头节点,并将头节点与其出边相连。
  5. 设置输入边: 为 JobVertex 设置输入边,定义数据流方向。
  6. 设置 Slot 共享组: 为 JobVertex 设置 Slot 共享组,优化资源利用。