ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Flink实时计算-- Checkpoint和Savepoint 区别与理解

2022-03-30 19:00:37  阅读:231  来源: 互联网

标签:快照 -- 恢复 Savepoint Flink 应用程序 Checkpoint


1. 什么是Savepoint和Checkpoint

Savepoint 是一项可让我们为整个流应用程序生成”某个时间”点快照的能力。快照包含有关您输入源的位置信息,以及数据源读取到的偏移量信息以及整个应用程序状态信息。

我们可以使用 Chandy-Lamport 算法的变体在不停止应用程序的情况下获得全部状态的一致性快照。

保存点包含两个主要元素:

首先,Savepoint 包括一个包含(通常是很大的)二进制文件的目录,该二进制文件表示在 Savepoint和Checkpoint 生成镜像时流应用程序的整个状态


一个(相对较小的)元数据文件,包含指向所有文件的指针(路径),这些文件是保存点的一部分,并存储在所选的分布式文件系统或数据存储中。

 

Checkpoint 是 Apache Flink 用于故障恢复的内部机制,包括应用程序状态快照以及输入源读取到的偏移量。

如果程序发生故障,Flink 会通过从 Checkpoint 加载应用程序状态并从恢复的读取偏移量继续读取来恢复应用程序,就像什么也没发生一样。

 

2.Flink Savepoints和Checkpoints的3个不同点

2.1 目标

从概念上讲,Flink 的 Savepoint 和 Checkpoint 的不同之处很像传统数据库中备份与恢复日志之间的区别。Checkpoint 的主要目标是充当 Flink 中的恢复机制,以确保能从潜在的故障中恢复。相反,Savepoint 的主要目标是充当手动备份之后重启、恢复暂停作业的方法。

2.2 实现

Checkpoint 和 Savepoint 在实现上也有不同。Checkpoint 的设计轻量并快速。它们可能(但不一定必须)充分利用底层状态后端的不同功能尽可能快速地恢复数据。基于 RocksDB 的状态后端可以使用 RocksDB 的内部格式,而不是 Flink 的原生格式进行增量 Checkpoint。加速了 RocksDB 的 Checkpoint 过程,从而使它们成为更轻量级的检查点机制的一个实例。相反,Savepoint 的设计重点是数据的可移植性,并支持对作业做任何更改,这些更改会使数据的生产和恢复成本更高。

2.3 生命周期

Checkpoint 是自动和定期的。它们由 Flink 自动,定期地创建和删除,不需与用户进行交互,以确保在作业意外失败的情况下可以恢复。相反,Savepoint 是由用户手动创建和管理的(即,调度、创建、删除)。

 

3. 何时使用 Savepoint ?

尽管流处理应用程序处理的是连续产生的数据(”运动中”的数据),但在某些情况下,应用程序可能需要重新处理以前处理过的数据。Apache Flink 中的 Savepoint 允许您在以下情况下执行此操作:

部署新版本的流应用程序,包括上线新功能,修复Bug或更好的机器学习模型。
为应用程序引入 A/B 测试,使用相同的源数据流测试程序的不同版本,从相同的时间点开始测试而不用牺牲先前的状态。
在需要更多资源的情况下重新对应用程序扩容。
将流应用程序迁移到 Flink 的新版本上,或迁移到另一个集群。

 

参考:

Flink Savepoints和Checkpoints的3个不同点

标签:快照,--,恢复,Savepoint,Flink,应用程序,Checkpoint
来源: https://www.cnblogs.com/-courage/p/16078519.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有