分享

Apache Flink中Savepoints和Checkpoints之间的3个区别

pig2 2018-11-7 12:39:47 发表于 介绍解说 [显示全部楼层] 回帖奖励 阅读模式 关闭右栏 2 9522

问题导读

1.Savepoints和Checkpoints是什么?
2.Savepoints和Checkpoints有哪三点区别?
3.何时在流应用程序中使用Savepoints?

关注最新经典文章,欢迎关注公众号


术语解释:
Savepoints为保存点
Checkpoints为检查点

#############
这篇解释了Savepoints和Checkpoints是什么,并检查了它们在Apache Flink中的主要区别。 在下面内容中,我们将解释Savepoints的用途,何时使用它们,并对它们与检查点的不同之处进行比较。

Apache Flink中的Savepoints和Checkpoints是什么?
Apache Flink Savepoint是一项功能,允许您拍摄整个流应用程序的“时间点”快照。 此快照包含有关输入位置的信息,以及有关源的所有位置和整个应用程序状态的信息。 我们可以获得整个状态的一致快照,而无需使用Chandy-Lamport算法的变体来停止应用程序。 Savepoints包含两个主要元素:

  • 首先,Savepoints包括一个目录,其中包含(通常很大的)二进制文件,这些文件表示Checkpoint / Savepoint映像点处的流应用程序的整个状态。
  • 一个(相对较小的)元数据文件,包含指向Savepoint一部分的所有文件的指针(路径),并存储在所选的分布式文件系统或数据存储中。

检查点是Apache Flink从故障中恢复的内部机制,包括应用程序状态的副本,包括输入的读取位置。 如果发生故障,Flink将通过从检查点加载应用程序状态并从恢复的读取位置继续恢复应用程序,就像没有发生任何事情一样。

Apache Flink中保存点和检查点之间的3个区别
检查点和保存点是Flink作为流处理框架非常独特的两个特性。 保存点和检查点在实现中可能看起来相似,但是,这两个功能在以下3种方式上有所不同:

目标:从概念上讲,Flink的保存点与检查点的不同之处在于备份与传统数据库系统中的恢复日志不同。检查点的主要目标是充当Apache Flink中的恢复机制,确保容错处理框架可以从潜在的作业失败中恢复。相反,Savepoints的主要目标是在手动备份和用户恢复活动后充当重启,继续或重新打开暂停的应用程序的方法。

实施:检查点和保存点的实施方式不同。检查点设计轻巧,快速。他们可能(但不一定必须)利用底层状态backend的不同功能并尽可能快地恢复数据。例如,使用RocksDB状态backend的增量检查点使用RocksDB的内部格式而不是Flink的本机格式。这用于加速RocksDB的检查点过程,使它们成为更轻量级的Checkpointing机制的第一个实例。相反,Savepoints旨在更多地关注数据的可移植性,并支持对作业所做的任何更改,这使得生成和恢复的成本略高。

生命周期:检查点是自动和定期的。它们由Flink自动定期拥有,创建和删除,无需任何用户交互,以确保在意外作业失败的情况下完全恢复。相反,用户手动拥有和管理保存点(即,它们被调度,创建和删除)。

何时在流应用程序中使用Savepoints?

尽管流处理应用程序处理连续生成的数据(数据“运动中”),但是存在应用程序可能需要重新处理先前已处理的数据的情况。  Flink中的保存点允许在以下情况下执行此操作:

  • 部署流应用程序的更新版本,包括新功能,错误修复或更好的机器学习模型
  • 为应用程序引入A / B测试,使用相同的源数据流测试程序的不同版本,从同一时间点开始测试而不牺牲先前的状态
  • 在需要更多资源的情况下重新调整应用程序
  • 将流式应用程序迁移到Apache Flink的新版本,或将应用程序升级到其他群集。

结论
检查点和保存点是Apache Flink中的两个不同功能,它们满足不同的需求,以确保一致性,容错性,并确保在意外的作业失败(使用检查点)以及升级的情况下保持应用程序状态,bug 修复,迁移或A / B测试(使用Savepoints)。 这两个功能相结合,可以在不同的实例中涵盖,确保应用程序的状态在不同的场景和环境中保持不变。

相关文章:
确定Apache Flink集群规模时需要考虑的6件事
http://www.aboutyun.com/forum.php?mod=viewthread&tid=25599


Apache Flink如何管理Kafka消费者offsets
http://www.aboutyun.com/forum.php?mod=viewthread&tid=25592


Apache Flink:开发经验总结
http://www.aboutyun.com/forum.php?mod=viewthread&tid=25558


Flink状态流处理:State  Backends三种方式详解
http://www.aboutyun.com/forum.php?mod=viewthread&tid=26230


Flink Watermarks【水位线】详解
http://www.aboutyun.com/forum.php?mod=viewthread&tid=25615


Flink使用场景-生产环境【适合架构师、面试者】
http://www.aboutyun.com/forum.php?mod=viewthread&tid=25634


即将到来的Flink1.7中迎来新的Kafka 连接器
http://www.aboutyun.com/forum.php?mod=viewthread&tid=25610


Flink实时性、容错机制、窗口等介绍
http://www.aboutyun.com/forum.php?mod=viewthread&tid=25540


Apache Flink:详细入门
http://www.aboutyun.com/forum.php?mod=viewthread&tid=18491


阿里巴巴搜索中为何使用Flink及如何实践介绍
http://www.aboutyun.com/forum.php?mod=viewthread&tid=21047


已有(2)人评论

跳转到指定楼层
jiangzi 发表于 2018-11-7 14:13:32
Savepoints和Checkpoints之间的3个区别, 学习了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条