Flink中保存点和检查点之间的差异



我知道stackoverflow上也有类似的问题,但在调查了其中几个问题后,我知道

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

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

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

考虑以下两种情况:

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

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

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

我应该使用保存点来恢复整个应用程序以修复错误吗?

是。在这些情况下,您不希望从检查点恢复,因为最近的检查点可能发生在几分钟前。相反,您希望快照整个应用程序的当前状态,并从最新的保存点重新启动它,这可能是恢复应用程序的最快方法,不会有太多延迟。

外部化检查点。

它仍然是检查点,但将根据您的配置从外部持久化。它可以用于恢复应用程序,但状态不是实时的,因为检查点之间存在间隔。

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

相关内容

  • 没有找到相关文章

最新更新