Apache Flink 中的作业管理器(JobManager),又称为 Master,是整个 Flink 集群的核心控制组件,负责对提交的流处理作业进行全局管理和协调。作业管理器在 Flink 分布式系统架构中扮演着至关重要的角色,主要承担以下职责:
1. 作业提交与初始化
- 作业接收与解析:作业管理器监听客户端提交的作业请求,接收用户通过 Flink 客户端编译并提交的作业图(JobGraph)。JobGraph 是用户编写的应用程序经过编译后的逻辑视图,包含作业的所有算子、数据流连接以及配置信息。
- 作业规划:作业管理器解析 JobGraph,将其转换为执行图(ExecutionGraph)。ExecutionGraph 更具体地描述了作业如何在分布式环境中执行,包括任务切分、并行度设置、依赖关系等细节。
- 资源分配:根据作业需求和集群资源状况,作业管理器确定每个任务应在哪些 TaskManager 上执行,以及每个 TaskManager 上应分配多少个 Task Slot。
2. 全局调度与协调
- 任务调度:作业管理器将 ExecutionGraph 中的任务分配给各个 TaskManager,启动任务执行。它持续跟踪任务状态,根据作业进度、资源情况和故障恢复需求进行动态调度。
- 数据流协调:作业管理器协调跨节点的数据流,管理 Shuffle 服务(如有必要),确保数据在 TaskSlot 间正确传输