Flink 术语通关手册:彻底搞懂 Flink 所有名词 📅 2026/7/24 22:23:04 一、核心运行架构类1、Flink 整体核心架构(标准集群部署)四大核心组件:1、Client 客户端:提交 Job, 解析 JobGraph,上传 Jar、配置,连接 JobManager2、JobManager(JM,主节点)JobMaster: 单个 Job 的管理者,生成 ExecutionGraph、调度 Task、协调 Checkpoint、故障恢复ResourceManager (RM):向 Yarn/K8s/Standalone 申请 TaskManager 资源,管理 Slot 池Dispatcher:接收客户端 Job 提交,启动对应 JobMaster,提供 Rest 接口3、TaskManager(TM,工作节点)真正执行计算任务的进程,一台机器可启多个 TM内部划分Slot(任务槽):TM 的并发执行单元,Slot 数量 = 该 TM 最大并行度每个 Slot 拥有独立内存,多个 Task 线程在 Slot 内运行4、Resource Provider:资源层(Standalone/Yarn/K8s/Mesos),提供容器 / 机器资源负责 Flink 集群整体结构、进程、资源、部署模式包含名词:2、Job、JobGraph、ExecutionGraph、Task、SubTask 关系1、Job:用户编写的完整数据流程序(一条业务任务)2、JobGraph:Client 将代码编译后的逻辑 DAG,节点 = 算子(Operator),边 = 数据流,无并行度拆分3、ExecutionGraph:JobMaster 拆分 JobGraph 得到物理执行图每个算子根据并行度拆分成多个SubTask(子任务)SubTask 是最小调度执行单元,一个并行度对应一个 SubTask4、Task:Flink 调度最小单元,一组链式算子的 SubTask 打包成一个 Task(算子链 Operator Chain 优化)同一 Slot 内只能运行同一个 Job 的 Task算子链内所有 SubTask 共享一个线程,减少数据序列化 / 网络开销3、10 道分层自测题题目1、Flink 集群中负责申请机器资源、管理 TaskManager 槽位池的组件是?(C)A. DispatcherB. JobMasterC. ResourceManagerD. Client题目2、请简述 Client、JobManager、TaskManager 三者在 Job 提交到运行全过程的分工。答案: 1、Client:解析代码生成 JobGraph,上传任务 Jar 包,向 Dispatcher 提交 Job;2、JobManager:Dispatcher 接收任务,启动 JobMaster;RM 向资源框架申请 TM 资源;JobMaster 生成 ExecutionGraph、拆分 SubTask、调度 Task、管理 Checkpoint 与故障恢复;3、TaskManager:启动 Slot,接收分配的 Task,在线程中执行算子 SubTask,完成数据计算、状态存储、网络数据传输。题目 3、“一个 TaskManager 的 Slot 数量决定了该 TaskManager 最多能同时执行多少个 SubTask”,这句话是否正确?说明理由。错误 ! Slot 限制的是Task 数量,不是 SubTask;一个 Task 内部可包含多个链式算子的 SubTask,单个 Slot 能承载多个 SubTask,仅限制同时运行 1 个 Task。题目 4、JobGraph 和 ExecutionGraph 的核心区别是什么,分别由哪个组件生成?答案:1、JobGraph:逻辑执行图,Client 生成,只定义算子 DAG,不拆分并行子任务;2、ExecutionGraph:物理执行图,JobMaster 生成,根据并行度拆分为多个 SubTask,划分 Task,用于实际调度。题目 5、什么是算子链(Operator Chain)?哪些操作会打断算子链?算子链对 Task、Slot 分布有什么影响?算子链:将上下游无 shuffle 的算子合并为同一个 Task,共享线程、减少网络 IO;打断链操作:keyBy、rebalance、broadcast、partition 自定义重分区、设置 chain.disable;