Apache flink Apache Flink-检查点和;节省积分?

Apache flink Apache Flink-检查点和;节省积分?,apache-flink,Apache Flink,有人能帮我理解ApacheFlink的检查点和保存点之间的区别吗 当我阅读文档时,无法理解其中的区别!:保存点 保存点通常适用于单个交易;这标志着 事务可以回滚到的点,因此 如有必要,可以撤消更改 更多信息请参见此处 检查点 检查点通常应用于整个系统,您可以将定期检查点配置为在外部持久化。外部化检查点将其元数据写入持久性存储,并且在作业失败时不会自动清除。 更多信息请参见此处: Apache Flink的检查点和保存点类似,它们都是保存Flink应用程序内部状态的机制 检查点是自动获取的,用于

有人能帮我理解ApacheFlink的检查点和保存点之间的区别吗


当我阅读文档时,无法理解其中的区别!:保存点

保存点通常适用于单个交易;这标志着 事务可以回滚到的点,因此 如有必要,可以撤消更改

更多信息请参见此处

检查点

检查点通常应用于整个系统,您可以将定期检查点配置为在外部持久化。外部化检查点将其元数据写入持久性存储,并且在作业失败时不会自动清除。 更多信息请参见此处:


Apache Flink的检查点和保存点类似,它们都是保存Flink应用程序内部状态的机制

检查点是自动获取的,用于在出现故障时自动重新启动作业

另一方面,保存点是手动获取的,始终存储在外部,用于在以下情况下启动具有以前内部状态的“新”作业:

  • 错误修复
  • flink版本升级
  • A/B测试等
实际上,在它们的下面是相同的机制/代码路径,有一些细微的差别


编辑:

您还可以在官方文档中找到一个非常好的解释:

保存点是通过Flink的检查点机制创建的流作业执行状态的一致映像。您可以使用保存点停止和恢复、分叉或更新Flink作业。保存点由两部分组成:一个在稳定存储(例如HDFS、S3等)上具有(通常较大的)二进制文件的目录和一个(相对较小的)元数据文件。稳定存储器上的文件表示作业执行状态映像的净数据。保存点的元数据文件以绝对路径的形式包含(主要)指向稳定存储中属于保存点一部分的所有文件的指针。 注意:为了允许在程序和Flink版本之间进行升级,请务必查看以下关于为操作员分配ID的部分

从概念上讲,Flink的保存点不同于检查点,就像备份不同于传统数据库系统中的恢复日志一样。检查点的主要用途是在意外作业失败时提供恢复机制。检查点的生命周期由Flink管理,即检查点由Flink创建、拥有和发布,无需用户交互。作为一种定期触发的恢复方法,检查点实现的两个主要设计目标是i)创建时尽可能轻,以及ii)尽可能快地从中恢复。针对这些目标的优化可以利用某些属性,例如,作业代码在执行尝试之间不会改变。检查点通常在用户终止作业后删除(除非明确配置为保留检查点)

与此相反,保存点由用户创建、拥有和删除。它们的用例用于计划、手动备份和恢复。例如,这可能是对Flink版本的更新、更改作业图、更改并行性、分叉第二个作业(如红色/蓝色部署),等等。当然,保存点必须在作业终止后仍然有效。从概念上讲,保存点的生成和恢复成本可能会稍高一些,并且更注重可移植性和对前面提到的作业更改的支持

除了这些概念上的差异,检查点和保存点的当前实现基本上使用相同的代码并生成相同的格式。然而,目前有一个例外,我们可能会在未来引入更多的差异。例外情况是RocksDB状态后端的增量检查点。他们使用一些RocksDB内部格式,而不是Flink的原生保存点格式。与保存点相比,这使它们成为更轻量级检查点机制的第一个实例


我想补充的区别是,在升级管道和检查点时,可以手动应用保存点,以防管道重新启动或突然崩溃。然而,在应用程序(管道)必须处理任何场景(如重新处理重复数据等)的情况下,可能会有副作用