Apache Flink 中作业图与执行图的深入解析

Apache Flink 是一个用于分布式流处理和批处理的开源框架,它的核心概念之一是使用一系列层次化的执行图来抽象和优化用户的流处理作业。以下是 Flink 中作业图和执行图的详细介绍:

  1. StreamGraph(逻辑流图)

    • StreamGraph 是用户编写的应用程序代码转换成的第一个图表示形式。当用户通过 Flink 的 DataStream 或 DataSet API 编写程序时,Flink 会根据程序中定义的数据源、转换操作(例如 map、filter、join 等)和数据接收器生成一个 StreamGraph。
    • 它反映了程序的原始拓扑结构,包含了所有算子(Operator)及其之间的数据流关系,但并未包含任何关于并行度或其他执行层面的细节。
  2. JobGraph(作业图)

    • JobGraph 是 StreamGraph 经过优化后的版本,是 Flink 客户端提交给 JobManager 的数据结构。
    • 在生成 JobGraph 的过程中,Flink 会对 StreamGraph 进行一系列优化,比如合并连续的同类算子、设置并行度等。
    • JobGraph 包含了具体的并行任务(JobVertex),每个 JobVertex 对应了一个或者多个具有相同逻辑的 Operator,同时连接 JobVertex 的边则代表了数据流通道。
  3. ExecutionGraph(执行图)

    • ExecutionGraph 是 JobManager 根据 JobGraph 创建的实际执行计划,它是 Flink 执行引擎的核心数据结构。
    • ExecutionGraph 更进一步细化了 JobGraph 中的任务,并考虑了容错、调度等因素。每个 JobVertex 在 ExecutionGraph 中对应一个 ExecutionVertex,每个 ExecutionVertex 表示一个具体的并行任务实例,可能分布在不同的 TaskManager 上执行。
    • ExecutionGraph 还记录了任务间的依赖关系、任务的分配情况以及状态恢复信息等,在作业执行期间用于资源分配、故障恢复和进度协调。
  4. PhysicalGraph (物理执行图)

    • 物理执行图是指在实际部署和执行过程中形成的图,也就是由具体 Task(在 TaskManager 上运行的实体)构成的网络。它是由 ExecutionGraph 进一步分解和映射到具体的物理节点(TaskManager)上的表现形式。
    • 每个 Task 由 AbstractInvokable 类的一个实例来执行,它们负责实际的数据处理工作。

总结来说,从用户编写的应用程序代码到最后物理执行的过程中,Flink 通过逐层构建和优化执行图,有效地将复杂的流处理逻辑转换为可在分布式环境中高效执行的任务网络。这一系列图的转换过程确保了 Flink 能够透明地处理分布式系统的复杂性,并实现高可用、高性能的流和批处理作业。

相关推荐
小羊没烦恼!9 小时前
微服务化的基石——持续集成
java·大数据·word·powerpoint·.net
一隅论数智9 小时前
给AI一张“业务概念地图“:本体如何从哲学走向企业智能
大数据·人工智能·经验分享·笔记·学习·学习方法·政务
尧炎科技10 小时前
防潮抗变形,就选纯品梅花全桉多层板
大数据
程序员大阳10 小时前
副队长大数据教程(5)--集群情况下虚拟机网络配置
大数据·集群·nat·网路
自由能燃气设备10 小时前
商用全预混低氮冷凝锅炉免费方案vs付费方案对比+选型避坑指南
大数据·数据库·人工智能
科创致远11 小时前
科创致远 ESOP 系统核心效能与实战价值展示
大数据·数据库·人工智能·精益工程
嘉立创FPC苗工11 小时前
FPC与机器人的双向赋能,解锁智能装备进化新势能
大数据·人工智能·制造·fpc·电路板
AI职业加油站11 小时前
AI智能体应用工程师证书:政策红利下的职业新风口
大数据·运维·人工智能·学习·职场发展
龙亘川11 小时前
一网统管AI平台民生业务实践:基于城市数字底座赋能公积金业务服务升级
大数据·安全·智慧城市·开源软件·数据可视化·政务
码流子12 小时前
高速公路安全监测实践:碰撞监测预警+物联网底座,从感知到处置的闭环
大数据·人工智能·物联网·算法·架构