Flink Savepoint 工作机制

Posted @SmartSi

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Flink Savepoint 工作机制相关的知识,希望对你有一定的参考价值。

1. 概述

Savepoint 是 Checkpoint 的一种特殊实现,底层其实也是使用 Checkpoint 的机制。Savepoint 是用户以手工命令的方式触发 Checkpoint,并将结果持久化到指定的存储路径中,其主要目的是帮助用户在升级和维护集群过程中保存系统中的状态数据,避免因为停机维护或者升级应用等正常终止应用的操作导致系统无法恢复到原有的计算状态的情况,从而无法实现端到端的 Exactly-Once 语义保证。

Savepoint 与 Checkpoint 的具体区别,可以参阅Flink Savepoints 和 Checkpoints 的 3 个不同点

2. 分配算子 ID

当使用 Savepoint 对整个集群进行升级或者运维操作的时候,需要停止整个 Flink 应用程序,此时用户可能会对应用的代码逻辑进行修改,即使 Flink 能够通过 Savepoint 将应用中的状态数据同步到磁盘然后恢复任务,但由于代码逻辑发生变化,在升级过程中有可能导致算子的状态无法通过 Savepoint 中的数据进行恢复。在这种情况下就需要通过唯一的ID标记算子。

在 Flink 中默认支持自动生成算子ID,但是这种方式不利于对代码层面的维护和升级,建议用户尽可能的使用手工的方式对算子进行唯一ID标记。如下所示可以通过 uid() 方法指定唯一ID:

env.

以上是关于Flink Savepoint 工作机制的主要内容,如果未能解决你的问题,请参考以下文章

Flink SavePoint

【Flink 精选】阐述 Flink 的容错机制,剖析 Checkpoint 实现流程

Flink状态管理和恢复机制

Flink检查点(checkpoint)保存点(savepoint)的区别与联系

Apache Flink 实现原理:容错机制

day05_Flink容错机制