暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

这篇文章把 Flink Checkpoints 和 Savepoints 彻底给讲清楚了!

大数据技能圈 2023-09-01
57

Flink

Checkpoints vs. Savepoints

从概念上讲,Flink的保存点不同于检查点,就像传统数据库系统中的备份不同于恢复日志一样。

1

检查点

Checkpoints

检查点的主要目的是在发生意外作业失败时提供恢复机制。检查点的生命周期由Flink管理,即检查点由Flink创建、拥有和释放,无需用户交互。因为检查点经常被触发,并且依赖于故障恢复,所以检查点实现的两个主要设计目标是:

1)创建的过程是轻量级的

2)能够用来及时的恢复

如果用户终止应用程序,则自动删除检查点(除非将检查点显式配置为保留)。 

检查点可以保存到特定的一些state backend中。

需要恢复的作业逻辑上不会有修改,否则需要使用保存点

2

保存点

Savepoints

虽然保存点是用与检查点相同的机制在内部创建的,但它们在概念上是不同的,并且产生和恢复的成本会更高一些。它们的设计更侧重于可移植性和操作灵活性,特别是在任务逻辑更改方面。例如Flink版本的更新,更改工作图(代码业务逻辑),等等。

保存点的处理需要通过手动操作。

保存点仅由用户创建、拥有和删除。这意味着,Flink不会在作业终止或恢复后删除保存点,同时保存点独立于 state backend 的格式存储。

注意:从Flink 1.15开始,保存点也可以以特定于后端的本机格式存储,这样创建和恢复起来更快,但也有一些限制。

保存点操作示例请移步上篇文章Flink 实战 | 命令行实战看这篇就够了!

3

功能和限制

Capabilities and limitations

下表概述了各种类型的保存点和检查点的功能和限制。
!表示虽然这些操作目前是有效的,但Flink并没有正式保证对它们提供支持,因此存在一定程度的风险
操作规范保存点本地保存点对齐的检查点不对齐的检查点
状态后端更改xxx
状态处理器API(写入)xxx
状态处理器API(读取)!!x
独立和可重新定位xx
模式演化!!!
任意升级工作x
非任意性工作升级
Flink小版本升级x
Flink错误/补丁/版本升级
重新缩放
  • 状态后端更改 -- 配置创建快照时可以使用的不同状态后端。

  • 状态处理器API(写入)-- 通过State Processor API创建这种类型的新快照的能力。

  • 状态处理器API(读取) -- 通过State Processor API从已有的这种类型的快照读取状态的能力。

  • 独立和可重新定位 -- 一个快照文件夹包含了恢复所需的一切,它不依赖于其他快照,这意味着它可以很容易地移动到另一个地方。

  • 模式演化 -- 如果使用支持模式进化的序列化器(例如pojo和Avro类型),状态数据类型可以被改变。

  • 任意升级工作 -- 即使现有操作的分区类型(rescale、rebalance、map等)或运行中的记录类型发生了变化,也可以恢复快照。

  • 非任意性工作升级 -- 如果作业图拓扑和运行中的记录类型保持不变,则可以使用更新的操作符恢复快照。

  • Flink小版本升级 -- 使用旧的Flink小版本拍摄的快照 (1.x→1.y) 来进行任务恢复。

  • Flink错误/补丁/版本升级 -- 使用较旧的Flink版本拍摄的快照来记进行升级。(1.14.x → 1.14.y)。

  • 重新缩放 -- 使用与创建快照时不同的并行度恢复快照。   

动动小手

关注我们


文章转载自大数据技能圈,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论