• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
思想人生从关注生活开始
博客园    首页    新随笔    联系   管理    订阅  订阅

StreamGraph、JobGraph、ExecutionGraph以及物理执行图-史上最通俗易懂的Flink源代码深入分析教程

1.定义

StreamGraph、JobGraph、ExecutionGraph以及物理执行图是Apache Flink中实现流处理的关键组件,它们之间存在着层次结构和依赖关系,用于执行流处理任务。

  • StreamGraph
    StreamGraph是Flink的逻辑执行图,描述了整个流处理任务的流程和数据流转递规则,包括了数据源、转换算子、数据汇等元素,以及它们之间的依赖关系和传输规则。StreamGraph可以通过Flink的API或者DSL来构建,它与JobGraph之间是一一对应的关系。
  • JobGraph
    JobGraph是Flink的中间执行图,它是由StreamGraph转换而来,并加入了一些与物理执行相关的信息,例如任务的并行度、任务之间的边界、任务的资源需求等。JobGraph中的每一个任务都对应一个ExecutionJobVertex,它是ExecutionGraph中的一个节点。
  • ExecutionGraph
    ExecutionGraph是Flink的物理执行图,它是由JobGraph转换而来,描述了整个流处理任务的物理执行细节,包括了任务的调度、任务的执行顺序、任务之间的数据传输、任务的状态管理等。ExecutionGraph中的每一个ExecutionJobVertex都对应一个或多个ExecutionVertex,它们是物理执行图中的节点。
  • 物理执行图
    物理执行图是ExecutionGraph的一部分,描述了流处理任务的物理执行流程,包括了任务的调度、任务之间的数据传输、任务的状态管理等。在物理执行图中,每个ExecutionVertex都会被分配到一个或多个TaskManager节点上执行,而TaskManager节点则会根据任务的需求进行资源分配和管理,以实现任务的高效执行。

2.StreamGraph组成

  • 数据源:
    StreamGraph中的数据源定义了数据输入的方式,可以是文件、消息队列、Socket等。
  • 转换算子
    StreamGraph中的转换算子用于对数据进行转换操作,例如map、filter、reduce等。
  • 数据汇
    StreamGraph中的数据汇定义了数据输出的方式,可以是文件、消息队列、Socket等。
  • 依赖关系
    StreamGraph中的依赖关系定义了数据的流向和传输规则,例如数据源到转换算子的依赖、转换算子之间的依赖、转换算子到数据汇的依赖等。
  • StreamNode
    表示数据流处理程序中的算子,每个StreamNode包含算子的ID、算子的名称、算子的并行度、算子的类型以及算子之间的输入输出关系等信息。
  • StreamEdge
    表示算子之间的数据流关系,每个StreamEdge包含源算子的ID、目标算子的ID、数据流的分区方式以及数据流的类型等信息。
  • Optimizer
    表示Flink作业的优化器,用于对StreamGraph进行优化,包括任务链合并、任务拓扑排序等操作。

在Flink中,StreamGraph、JobGraph、ExecutionGraph以及物理执行图这些组件共同构成了流处理任务的执行流程,它们之间的关系和依赖决定了流处理任务的执行效率和性能。

posted @ 2023-03-11 15:52  JackYang  阅读(393)  评论(1)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3