课程讲解 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 程序翻译成可执行任务,要经过四层图:
- StreamGraph:由用户代码生成的逻辑图,每个算子是一个节点。
- JobGraph:经过算子链(Operator Chain)优化,将可以合并的算子合并成一个 JobVertex。
- ExecutionGraph:JobGraph 的并行化版本,每个并行实例是一个 ExecutionVertex。
- 物理执行图:TaskManager 上实际运行的 Task。
算子链与资源隔离#
- 算子链默认开启,能显著减少网络开销。
- 通过
disableChaining()或slotSharingGroup可以控制链与槽位分配。
从提交到运行#
以 YARN 部署为例:
- 客户端将 jar 与配置提交给 YARN。
- YARN 启动 JobManager 容器。
- JobManager 向 YARN 申请 TaskManager 容器。
- Task 分发、部署、开始处理数据。
小结#
这一讲的核心是记住“四层执行图”的演化路径,以及 JobManager 的调度中枢地位。下一讲我们深入状态管理与容错。