美文网首页Flink大数据开发
大数据开发:Flink中Checkpoint和Savepoint

大数据开发:Flink中Checkpoint和Savepoint

作者: 成都加米谷大数据 | 来源:发表于2021-07-06 17:38 被阅读0次

    Flink作为实时流计算现行的代表框架之一,强大的计算性能,也非常符合当下的实时数据流计算的需求。在Flink内部,各种概念的理解和掌握,也是学习阶段的难点。今天的大数据开发学习分享,我们就主要来讲讲Flink中Checkpoint和Savepoint两个概念。

    Savepoint和Checkpoint分别是什么?

    Savepoint是用来为整个流处理应用在某个“时间点”(point-in-time)进行快照生成的功能。该快照包含了数据源读取到的偏移量(offset),输入源的位置信息以及整个应用的状态。借助分布式快照算法(Chandy-Lamport)的变体,我们可以在应用程序运行中得到某个“时间点”一致的快照。

    Savepoint由一个目录以及一个元数据文件构成。其中目录中通常为一个很大的二进制文件,文件中包含了整个流应用在Savepoint或Checkpoint的状态。另外元数据文件通常相对较小,其中包含了指向Savepoint目录中各个文件的指针。上面关于Savepoint的介绍与Checkpoint很类似,但是二者还是有一些不同点的。

    首先Checkpoint是Flink用来从故障中恢复的机制,它快照下了整个应用程序的状态,当然也包括输入源读取到的位点。当应用发生故障时,Flink将通过从Checkpoint加载应用程序状态并从恢复出的历史读取位点继续应用的处理,就像什么事情都没发生一样。

    SavePoint和Checkpoint的3个不同点

    Savepoint和Checkpoint作为Apache Flink中的两个非常独特的两个特性,它们在实现中看起来也很相似,然而二者之间也有不同的地方,主要包含如下3点:

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

    实现上的差异Checkpoint和Savepoint在实现上也有不同。由于Savepoint设计时候更多的关注了应用的可移植性,支持对作业进行修改后状态能保持兼容,对应的,生成的恢复的成本更高;Checkpoint作为一种轻量与快速的机制,它可能利用底层状态后端的不同功能尽可能快速的恢复数据,如基于RocksDb状态后端的增量Checkpoint,可以极大加速Checkpoint过程,这种设计使得Checkpoint机制变得更加清量。

    生命周期不同Savepoint是需要用户手动进行管理(调度、创建、删除)的。相反,Checkpoint是自动和定期的,它们由Flink自动地周期性地创建和删除,无需用户的交互。

    如何使用SavePoint?

    虽然流式应用处理的数据是持续地生成的,但是存在某些场景需要重新处理之前已经处理过的数据,此时Savepoint便派上了用场,它可以在以下几种情况中使用:

    部署流应用的一个新版本,如新功能、修复Bug或者一个更好的机器学习模型。

    引入A/B测试,使用相同的源数据测试程序的不同版本,从同一时间点开始测试而不牺牲先前的状态。

    在进行应用程序资源扩容或者缩减时使用。

    流应用程序到进行Flink版本切换或者集群迁移时。

    总结:

    Checkpoint和Savepoint是Flink中两个不同的功能,它们满足了不同场景下的需求以确保一致性、容错性、作业升级、BUG修复、迁移、A/B测试等。这两个功能结合使用可以确保应用程序的状态在不同的场景和环境中保持不变。

    关于大数据开发学习,Flink中Checkpoint和Savepoint,以上就为大家做了基本的介绍了。大数据实时流计算,是当下大数据处理的典型需求,而Flink框架在其中占据着越来越重要的地位。

    相关文章

      网友评论

        本文标题:大数据开发:Flink中Checkpoint和Savepoint

        本文链接:https://www.haomeiwen.com/subject/fvwgultx.html