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 就创建完成了。

     

  • 相关阅读:
    WCF+EntityFramework+mysql总结
    实现Win7远程桌面关机和重启
    EF 4.1 一些操作
    Ado.net利用反射执行SQL得到实体
    .net IL 指令速查
    VS2010 /VC/bin/rcdll.dll 无法找到资源编译器
    Win7下 httpRequest带证书请求https网站
    VS2010 自动关闭的问题解决方法
    Android 之 悬浮窗口
    论 Java 中获取一组不重复的随机数之性能问题
  • 原文地址:https://www.cnblogs.com/qiu-hua/p/14526555.html
Copyright © 2011-2022 走看看