七万号·数据平台实战手记

Back

课程讲解 Flink 原理与实战 · 第 1 讲 / 共 2 讲

Flink 运行时架构与执行图

从 JobManager / TaskManager 到 StreamGraph、JobGraph、ExecutionGraph,理清 Flink 任务从提交到执行的完整链路。
views | comments
2 min
flink / 流计算

本讲是整个《Flink 原理与实战》课程的起点。我们不从 API 讲起,而是先把 Flink 的“骨架”——运行时架构与执行图——彻底拆开。

运行时组件#

一个 Flink 集群由两类进程组成:

  • JobManager:负责调度、检查点协调、故障恢复,是集群的“大脑”。
  • TaskManager:负责真正执行算子,是集群的“肌肉”。
客户端 → JobManager → TaskManager × N

           └── ZooKeeper / HA 模式
plaintext

四层执行图#

Flink 把一个 SQL/DataStream 程序翻译成可执行任务,要经过四层图:

  1. StreamGraph:由用户代码生成的逻辑图,每个算子是一个节点。
  2. JobGraph:经过算子链(Operator Chain)优化,将可以合并的算子合并成一个 JobVertex。
  3. ExecutionGraph:JobGraph 的并行化版本,每个并行实例是一个 ExecutionVertex。
  4. 物理执行图:TaskManager 上实际运行的 Task。

算子链与资源隔离#

  • 算子链默认开启,能显著减少网络开销。
  • 通过 disableChaining()slotSharingGroup 可以控制链与槽位分配。

从提交到运行#

以 YARN 部署为例:

  1. 客户端将 jar 与配置提交给 YARN。
  2. YARN 启动 JobManager 容器。
  3. JobManager 向 YARN 申请 TaskManager 容器。
  4. Task 分发、部署、开始处理数据。

小结#

这一讲的核心是记住“四层执行图”的演化路径,以及 JobManager 的调度中枢地位。下一讲我们深入状态管理与容错。

课程目录 · Flink 原理与实战

1/2 讲
  1. 01 Flink 运行时架构与执行图
  2. 02 Flink 状态管理与检查点容错
Flink 运行时架构与执行图
https://realcpf.tech/journal/flink-internals-01
Author 刘佳成
Published at 2025年5月20日