Flink中保存点和检查点之间的区别

时间:2019-02-04 08:01:07

标签: apache-flink

我知道在stackoverflow上也有类似的问题,但是在研究了其中几个问题之后,我知道了

  1. savepoint手动触发,而checkpoint触发 自动

  2. 他们正在使用不同的存储格式

但是这些并不是令人困惑的地方,我不知道何时使用一个或何时使用另一个。

请考虑以下两种情况:

  1. 如果由于某种原因(例如,错误修复或意外崩溃)需要关闭或重新启动整个应用程序,那么我将不得不使用savepoint来还原整个应用程序吗?
  2. 我认为checkpoint仅在Flink内部用于在应用程序运行时(即应用程序本身正在运行)提供容错功能,但是任务或其他事情可能会失败,即Flink将使用{{ 1}}进行状态恢复?
  3. 还有checkpoint,我认为它与externalized checkpoint的功能相同,也就是说,savepoint也可以用于从重新启动的应用程序中恢复吗?

1 个答案:

答案 0 :(得分:0)

  

Flink是否使用检查点进行状态恢复?

基本上您是对的。如您所说,检查点通常在Flink内部用于容错,它更像是框架内的概念。当您的应用程序失败时,程序将尝试从最新的检查点重新启动。这就是检查点在Flink中的工作方式,而无需任何人工干预。

  

我应该使用savepoint还原整个应用程序以修复错误吗?

是的。在这些情况下,您不想从检查点还原,因为最新的检查点可能在几分钟前发生。相反,您想对整个应用程序的当前状态进行快照,然后从最新的保存点重新启动它,这可能是恢复应用程序的最快方法,而不会造成太多延迟。

  

外部检查点。

它仍然是检查点,但将根据您的配置在外部保留。它可以用来还原应用程序,但是状态不是那么实时,因为检查点之间存在间隔。

有关更多信息,请查看此博客文章:https://data-artisans.com/blog/differences-between-savepoints-and-checkpoints-in-flink