1. JobManager高可用机制概述
在分布式流处理框架中,JobManager作为集群的大脑,负责作业调度和资源管理。一旦发生单点故障,整个作业将面临中断风险。Flink通过基于ZooKeeper的HA机制,实现了JobManager故障时的快速恢复。
这套机制的核心在于将JobManager的关键状态(如作业图、检查点元数据)持久化到外部存储,并通过ZooKeeper完成Leader选举。当活跃JobManager失效时,备用节点能迅速接管工作,结合检查点机制实现作业状态恢复。
注意:HA机制需要配合检查点功能使用,否则只能恢复作业提交状态,无法延续数据处理进度
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. HA架构设计与核心组件
2.1 整体架构组成
典型的HA部署包含以下核心组件:
- ZooKeeper集群:负责Leader选举和少量元数据存储
- 分布式存储系统(如HDFS):持久化作业恢复所需的状态快照
- 多个JobManager实例:形成主备关系,通常部署在不同物理节点
java复制// 典型配置示例
high-availability: zookeeper
high-availability.zookeeper.quorum: zk1:2181,zk2:2181,zk3:2181
high-availability.storageDir: hdfs://namenode:8020/flink/ha/
2.2 状态持久化策略
JobManager需要持久化的关键状态包括:
- 作业执行图(ExecutionGraph):描述作业拓扑结构
- 检查点元数据:包含所有检查点位置信息
- 作业提交日志:记录作业初始提交参数
这些数据通过HaServices接口抽象存储操作,实际实现包括:
ZooKeeperHaServices:将选举信息存ZK,大文件存分布式存储EmbeddedHaServices:测试用途的本地实现
3. 故障转移流程实现
3.1 正常运行时状态同步
主JobManager运行时持续进行:
- 每完成检查点时更新元数据到存储系统
- 定期向ZK发送心跳维持临时节点
- 将作业状态变更写入持久化日志
code复制
