1 个回答
Flink状态恢复的过程是:
1、故障检测与作业重启
1、故障检测与作业重启
TaskManager 定期发送心跳至 JobManager,超时未收到则判定为故障。
JobManager 标记故障 TaskManager 上的所有任务为失败。
JobManager 重新调度所有受影响的任务(默认重启整个作业,除非配置了 Region Failover)。
从 最近的完整 Checkpoint 恢复(默认策略)或指定 Savepoint。
2、恢复元数据与状态分配JobManager 从外部存储读取 Checkpoint 元数据,确认所有算子的状态文件路径及输入流位置(如 Kafka Offset)。
根据 Checkpoint 中的并行度信息,将任务重新调度到健康的 TaskManager 上。
如果并行度调整(如扩缩容),触发 KeyGroup 重分配(基于 Key 的哈希范围重新分布状态)。
3、状态加载与任务初始化RocksDBStateBackend:每个 TaskManager 从分布式存储下载快照的 SST 文件到本地 RocksDB 实例。
HashMapStateBackend:直接加载内存中的状态数据到堆内存。
Source 算子(如 Kafka Consumer)从 Checkpoint 中记录的 Offset 重新拉取数据,确保数据不丢失不重复。
4、数据处理续传所有算子从恢复后的状态开始处理数据,确保后续计算的 Exactly-Once 语义。
通过 Barrier 对齐 和 事务性输出(如 Kafka 两阶段提交)保障端到端一致性。
发布于:3周前 (05-16) IP属地:
我来回答
您需要 登录 后回答此问题!