zoukankan      html  css  js  c++  java
  • Flink 源码(二十二):Flink 任务调度机制(三)ExecutionGraph

    4 ExecutionGraph 在 JobManager生成 

      client 生成 JobGraph 之后,就通过 submitJob 提交给 JobManager,JobManager 会根据JobGraph 生成对应的 ExecutionGraph。
      ExecutionGraph 是 Flink 作业调度时使用到的核Ṩ数据结构,它包含每一个并ᒦ的 task、每⇿个 intermediate stream 以及它们之间的关系。
      以 per-job 模式为例,分析 ExecutionGraph 的生成逻辑:
      接 1.3.6,在 Dispacher 创建 JobManagerRunner 时,调用 createJobManagerRunner:

     

    下面是源码详细的跳转过程,可以直接略过,看后面 buildGraph()方法的分析:
    Dispatcher.java
    DefaultJobManagerRunnerFactory.java 

     

    JobManagerRunnerImpl.java
    DefaultJobManagerRunnerFactory.java

     

    JobMaster.java 

     

     

    DefaultSchedulerFactory.java

     

    SchedulerBase.java 

     

     

     

     

    接下来,分析生成 ExecutionGraph 的核心逻辑:
    ExecutionGraphBuilder.java 

     

     

     

     

     

     

     

     

     

     

     

     

     

      看这个方法之前,需要知道,ExecutionVertex 的 inputEdges 变量,是一个二维数据。它表示了这个 ExecutionVertex 上每一个 input 所包含的 ExecutionEdge 列表。
      即,如果 ExecutionVertex 有两个不同的输入:输入 A 和 B。其中输入 A 的 partition=1,输 入 B 的 partition=8 , 那 么 这 个 二 维 数 组 inputEdges 如 下 ( 以 irp 代 替IntermediateResultPartition) 
    到这里为止,ExecutionJobGraph 就创建完成了。

     

  • 相关阅读:
    第二次作业循环语句
    c语言01次作业分支,顺序结构
    PAT 1027. Colors in Mars
    PAT 1026 Table Tennis
    PAT 1035 Password
    PAT 1038. Recover the Smallest Number
    PAT 1028 List Sorting (25)
    PAT 1041 Be Unique (20)
    PAT 1025 PAT Ranking
    1037. Magic Coupon
  • 原文地址:https://www.cnblogs.com/qiu-hua/p/14526555.html
Copyright © 2011-2022 走看看