首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Apache Flink如何从检查点/保存点恢复状态?

Apache Flink 提供了检查点(Checkpoint)和保存点(Savepoint)两种机制来恢复状态,确保数据处理的容错性

  1. 检查点(Checkpoint):检查点是 Flink 容错机制的核心组成部分,主要用于自动恢复任务状态。当 Flink 任务执行过程中触发检查点时,它会将当前任务状态(包括状态后端的数据)保存到外部存储系统(如 HDFS、S3 等)。检查点的主要特点如下:
  • 自动恢复:当任务失败时,Flink 会从最近的检查点自动恢复状态。
  • 一致性:检查点保证了任务状态的一致性,避免了数据丢失或重复处理。

要使用检查点,需要在 Flink 配置文件中启用检查点功能,并设置检查点间隔、存储位置等参数。

  1. 保存点(Savepoint):保存点是手动触发的,用于在特定时间点保存任务状态。
  2. 与检查点相比,保存点的主要特点如下:
  • 手动触发:保存点需要手动触发,通常用于版本升级、任务迁移等场景。
  • 灵活性:保存点允许用户自定义触发条件、存储位置等参数。
  • 兼容性:保存点保证了任务状态的兼容性,可以在不同版本的 Flink 任务之间迁移。

要使用保存点,可以使用 Flink 提供的命令行工具或 Web UI 触发保存点,并将状态保存到外部存储系统。

总之,Apache Flink 通过检查点和保存点两种机制来恢复状态。检查点主要用于自动恢复任务状态,而保存点主要用于手动触发和迁移任务状态。在实际应用中,可以根据具体需求选择合适的恢复机制。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Flink DataStream—— 状态(State)&检查点(Checkpoint)&保存点(Savepoint)原理

介绍了状态、检查点、保存点原理 Flink DataStream—— 状态(State)&检查点(Checkpoint)&保存点(Savepoint)原理 [TOC] 1...背景 ​ 最近一次项目当中需要将大量数据保存再Flink程序当中用作缓存数据一共后续数据使用,隧对最近使用到的状态、检查点、保存点等原理和使用进行一个总结 2....假如我们使用一个持久化的备份系统,不断将内存中的状态备份起来,当流处理作业出现故障时,需要考虑如何从备份中恢复。而且,大数据应用一般是横向分布在多个节点上,流处理框架需要保证横向的伸缩扩展性。...Flink定期保存状态数据到存储上,故障发生后从之前的备份中恢复,这个过程被称为Checkpoint机制。 3.1 Checkpoint大致流程 暂停处理新流入数据,将新数据缓存起来。...参考 状态、检查点和保存点 Flink 状态分类

4.3K41

用户投稿 | Dinky 从保存点恢复 FlinkSQL 作业

导读:本文来自用户投稿,介绍了 Dinky 如何通过 SavePoint 来恢复 FlinkSQL 作业。...state.savepoints.dir: hdfs://bd171:8020/sp 二、在 Dinky 中恢复 FlinkSQL 作业 创建 Yarn Session 集群 在 Flink 根目录下执行以下命令向...SavePoint 这个 Sheet 下,也可以看到 SavePoint 保存的路径信息: 在 Dinky 的数据开发的作业中, 右边“保存点”栏也可以查看到 savepoint 记录: 向 Kafka...重启作业 在 Dinky 的运维中心,任务列表,任务详情页面,重启任务;任务重启完成后,可以看到,FlinlSQL 作业实现了从 SavePoint 中的状态恢复,找到 Kafka 的正确偏移,在任务停止期间进行...SavePoint 恢复作业运行的支持,非常方便。

72940
  • Flink1.4 外部检查点

    概述 检查点通过恢复状态和对应流位置来实现 Flink 状态容错,从而为应用程序提供与无故障执行相同的语义。 请参阅检查点以了解如何为你的应用程序启用和配置检查点。 2....外部检查点 Externalized Checkpoints 默认情况下检查点不会持久化存储在外部系统中,只是用来从故障中恢复作业。当一个程序被取消时它们会被删除。...检查点状态只有在作业失败时才可用。 2.1 目录结构 与保存点类似,外部检查点由元数据文件组成,一些其他数据文件(取决于状态后端)。...2.3 从外部检查点恢复 作业可以通过使用检查点的元数据文件从外部检查点中恢复,就像从保存点恢复一样(请参阅保存点恢复)。...Checkpoints 外部检查点 savepoints 保存点 原文:https://ci.apache.org/projects/flink/flink-docs-release-1.4/ops

    1.5K20

    使用 Apache Flink 开发实时ETL

    本文将介绍如何使用 Flink 开发实时 ETL 程序,并介绍 Flink 是如何保证其 Exactly-once 语义的。 案例 ? 让我们来编写一个从 Kafka 抽取数据到 HDFS 的程序。...暂存点和检查点类似,同样保存的是 Flink 各个算子的状态数据(Operator State)。不同的是,暂存点主要用于人为的脚本更替,而检查点则主要由 Flink 控制,用来实现故障恢复。...可重放的数据源 当出错的脚本需要从上一个检查点恢复时,Flink 必须对数据进行重放,这就要求数据源支持这一功能。Kafka 是目前使用得较多的消息队列,且支持从特定位点进行消费。...kafkaTopicPartitionLongEntry.getKey(), kafkaTopicPartitionLongEntry.getValue())); } } } 当数据源算子从检查点或暂存点恢复时...Flink 构建在实时处理之上,从设计之初就充分考虑了中间状态的保存,而且能够很好地与现有 Hadoop 生态环境结合,因而在大数据领域非常有竞争力。

    2.5K31

    昨天面试别人说他熟悉Flink,结果我问了他Flink是如何实现exactly-once语义的?

    (即是偏移量),并保存offest,这时offest也可以理解为是一种状态....检查点是 Flink 应用状态的一个一致性副本,包括了输入的读取位点。在发生故障时,Flink 通过从检查点加载应用程序状态来恢复,并从恢复的读取位点继续处理,就好像什么事情都没发生一样。...存储在一个分布式的持久化系统中,如果发生故障,就会从最近的一次checkpoint中将整个流的状态进行恢复....Apache Flink 中实现的 Kafka 消费者是一个有状态的算子(operator),它集成了 Flink 的检查点机制,它的状态是所有 Kafka 分区的读取偏移量。...因此,当从潜在的系统故障中恢复时,系统提供了 excatly-once 的状态更新语义。 下面我们将一步步地介绍 Apache Flink 中的 Kafka 消费位点是如何做检查点的。

    2.2K20

    Flink中的Exactly-Once语义是什么?请解释其作用和实现原理。

    Flink将所有状态都保存在可靠的分布式存储系统中,如分布式文件系统或分布式数据库,以便在故障恢复时能够恢复到一致的状态。...一致的检查点机制:Flink使用一致的检查点机制来定期将状态快照保存到可靠的存储系统中。检查点是一个包含了所有算子状态的一致性快照。...在进行检查点时,Flink会暂停数据处理,将所有状态写入存储系统,并记录下检查点的元数据。这样,即使在发生故障时,Flink也可以使用最近的检查点来恢复状态,并确保数据处理从故障点继续进行。...精确的状态恢复:当Flink从故障中恢复时,它会使用最近的检查点来恢复状态,并从检查点之后的数据开始重新处理。...下面是一个使用Flink实现Exactly-Once语义的Java代码示例,演示了如何计算每个用户的访问次数,并确保每个用户的访问次数只计算一次: import org.apache.flink.api.common.functions.MapFunction

    7710

    State Processor API:如何读取,写入和修改 Flink 应用程序的状态

    过去无论是在生产中使用,还是调研 Apache Flink,总会遇到一个问题:如何访问和更新 Flink 保存点(savepoint)中保存的 state?...Apache Flink 1.9 引入了状态处理器(State Processor)API,它是基于 DataSet API 的强大扩展,允许读取,写入和修改 Flink 的保存点和检查点(checkpoint...为了保证应用程序状态的一致性和持久性,Flink 从一开始就设计了一套复杂巧妙的检查点和恢复机制。...在每一个版本中,Flink 社区都添加了越来越多与状态相关的特性,以提高检查点执行和恢复的速度、改进应用程序的维护和管理。 然而,Flink 用户经常会提出能够“从外部”访问应用程序的状态的需求。...MyApp 的保存点或检查点均由所有状态的数据组成,这些数据的组织方式可以恢复每个任务的状态。在使用批处理作业处理保存点(或检查点)的数据时,我们脑海中需要将每个任务状态的数据映射到数据集或表中。

    1.9K20

    Flink核心概念之有状态的流式处理

    在数据点流上训练机器学习模型时,状态会保存模型参数的当前版本。 当需要管理历史数据时,状态允许有效访问过去发生的事件。 Flink 需要了解状态,以便使用检查点和保存点使其容错。...流式数据流可以从检查点恢复,同时通过恢复操作符的状态并从检查点重放记录来保持一致性(恰好一次处理语义)。 检查点间隔是一种权衡执行期间容错开销与恢复时间(需要重放的记录数)的方法。...因为 Flink 的检查点是通过分布式快照实现的,所以我们可以互换使用快照和检查点这两个词。 通常我们也使用术语快照来表示检查点或保存点。...image.png 保存点 所有使用检查点的程序都可以从保存点恢复执行。 Savepoints 允许在不丢失任何状态的情况下更新你的程序和你的 Flink 集群。...保存点是手动触发的检查点,它对程序进行快照并将其写入状态后端。 他们为此依靠常规检查点机制。 保存点类似于检查点,不同之处在于它们由用户触发,并且在更新的检查点完成时不会自动过期。

    1.1K20

    Flink1.4 保存点之回溯时间

    我们说”免费”,意思是只要你的程序是容错的,并且可以从错误中恢复,那你就可以在 Flink 中创建一个保存点并重新处理数据,花费的额外准备工作量几乎为零。 2....事实上,所有支持故障恢复的程序都是自动支持保存点的。因此,大多数进行有状态计算的程序已经满足了需要的条件。...配置一个合适的状态后台:Flink 提供了不同的状态后台来将检查点和保存点持久化。...不过,如果你用一个修改了的架构从保存点开始启动程序,那么为了能够恢复算子的状态,Flink 必须能够将保存点程序的算子与使用了新架构的新程序的算子对应起来。...保存点事实上只是检查点的一个延伸,这就是 Flink 的容错机制。如果开启了检查点功能,Flink 就会周期性地为所有的算子状态生成一个一致的检查点。

    1K10

    Flink Kafka Connector

    当作业从故障中自动恢复或使用保存点手动恢复时,这些起始位置配置方法不会影响起始位置。在恢复时,每个 Kafka 分区的起始位置由存储在保存点或检查点中的偏移量确定。...2.3 容错 当 Flink 启动检查点时,Consumer 会从 Topic 中消费记录,并定期对 Kafka 偏移量以及其他算子的状态进行 Checkpoint。...如果作业失败,Flink 会从最新检查点的状态恢复流处理程序,并从保存在检查点中的偏移量重新开始消费来自 Kafka 的记录。 因此,检查点间隔定义了程序在发生故障时最多可以回退多少。...当使用 Flink 1.3.x 之前的版本,消费者从保存点恢复时,无法在恢复的运行启用分区发现。如果要启用,恢复将失败并抛出异常。...在这种情况下,为了使用分区发现,需要在 Flink 1.3.x 版本中生成保存点,然后再从中恢复。

    4.8K30

    Flink如何管理Kafka的消费偏移量

    检查点(Checkpoint)是一种能使 Flink 从故障恢复的内部机制。检查点是 Flink 应用程序状态的一致性副本,包括了输入的读取位点。...如果发生故障,Flink 通过从检查点加载应用程序状态来恢复应用程序,并从恢复的读取位点继续处理,就好像什么事情都没发生一样。你可以把检查点理解为电脑游戏的存档。...当一个检查点被触发时,每一个分区的偏移量都保存到这个检查点中。Flink 的检查点机制保证了所有算子任务的存储状态都是一致的,即它们存储状态都是基于相同的输入数据。...当所有的算子任务成功存储了它们的状态,一个检查点才成功完成。因此,当从潜在的系统故障中恢复时,系统提供了 Excatly-Once 的状态更新语义。...下面我们将一步步的介绍 Flink 如何对 Kafka 消费偏移量做检查点的。在本文的例子中,数据存储在 Flink 的 JobMaster 中。

    7.1K51

    flink分析之Task的生命周期

    注意,initializeState()既包含在Operator初始执行期间初始化状态的逻辑(例如注册任何keyed state),也包含在失败后从检查点检索其状态的逻辑。更多关于这一页的其余部分。...这是在setInitialState()中完成的,在两种情况下特别重要: 1.当任务正在从失败中恢复并从最后一个成功的检查点重新启动时;2.当从保存点(savepoint[5])恢复时。...第一次执行时,任务初始状态为空。 恢复任何初始状态后,任务进入它的invoke()方法。...每个有状态Operator都应该覆盖这个方法,并且应该包含状态初始化逻辑,无论是第一次执行作业时,还是任务从失败中恢复或使用保存点时。...检查点: 前面我们看到,在initializeState()期间,以及在从失败中恢复的情况下,任务及其所有Operator和函数检索在失败前的最后一个成功检查点期间持久化到稳定存储的状态。

    1.6K40

    聊聊Flink必知必会(七)

    Flink 需要了解状态(state),以便使用检查点(checkpoint)和保存点(savepoint)实现容错(fault-tolerant)。...通过恢复算子的状态并从检查点(checkpoint) 重放(replay)记录,可以从检查点(checkpoint)恢复数据流,同时保持一致性(仅一次处理语义)。...例如,在 Apache Kafka 中,这意味着告诉消费者从offset Sk 开始获取。...除了定义保存状态的数据结构之外,状态后端还实现了获取键/值状态的时间点快照并将该快照存储为checkpoint的一部分的逻辑。 可以在不更改应用程序逻辑的情况下配置状态后端。...Savepoints 所有使用checkpoint的程序都可以从savepoint恢复执行。savepoint允许更新您的程序和 Flink 集群,而不会丢失任何状态。

    23710

    Cloudera中的流分析概览

    Cloudera流分析(CSA)提供由Apache Flink支持的实时流处理和流分析。在CDP上的Flink提供了具有低延迟的灵活流解决方案,可以扩展到较大的吞吐量和状态。...任务的资源管理由Flink中的作业管理器完成。在Flink群集中,Flink作业作为YARN应用程序执行。HDFS用于存储恢复和日志数据,而ZooKeeper用于对作业进行高可用性协调。 ?...您还可以创建检查点和保存点,以在持久性存储上对流式应用程序进行容错备份。 ? 事件时间和水印 在时间敏感的情况下,应用程序使用警报或触发功能,区分事件时间和处理时间很重要。...检查点和保存点 可以创建检查点和保存点,以使Flink应用程序在整个管道中容错。Flink包含一个容错机制,该机制可以连续创建数据流的快照。快照不仅包括数据流,还包括附加的状态。...如果发生故障,则选择最新快照,然后系统从该检查点恢复。这保证了可以始终保持计算结果的一致性。当检查点由Flink创建和管理时,保存点由用户控制。保存点可以描述为已执行过程的备份。 ?

    1.2K20

    Flink如何实现端到端的Exactly-Once处理语义

    将检查点数据写入持久存储是异步发生的,这意味着 Flink 应用程序在写检查点过程中可以继续处理数据。 如果发生机器或软件故障重新启动后,Flink 应用程序从最近成功完成的检查点恢复。...在处理开始之前,Flink 从检查点恢复应用程序状态并回滚到输入流中的正确位置。这意味着 Flink 的计算结果就好像从未发生过故障一样。...我们知道,如果发生故障时,Flink 会将应用程序的状态恢复到最新的成功检查点。有一种极端情况,在成功预提交之后但在提交通知到算子之前发生故障。...在这种情况下,Flink 会将我们的算子恢复到已经预提交但尚未提交的状态。 我们必须在检查点状态下保存有关预提交事务的足够信息,以便能够在重新启动后正确中止或提交事务。...TwoPhaseCommitSinkFunction 已经将这种情况考虑在内了,当从检查点恢复状态时优先发出一个提交。我们需要以幂等方式实现提交。一般来说,这应该不难。

    3.3K10

    Flink如何实现新的流处理应用第二部分:版本化状态

    保存点:版本化状态 在 Flink 中,我们引入了保存点功能,可以解决上述问题以及未来更多问题。保存点可以从正在运行的 Flink 作业上获取,实质上是在一个时间点上定义可以从外部访问的作业的快照。...包含当前正在从数据源读取数据的偏移量,以在这个偏移量处的程序状态。在内部,保存点只是 Flink 普通的定期检查点,以保证在发生故障时的正确性。主要区别是: 保存点可以手动触发。...要从保存点恢复作业,只需运行如下即可: flink run -s pathToSavePoint jobJar 使用保存点,不必从头开始重新读取事件流以重新填充 Flink 作业的状态,因为你可以随时获取一致性快照并从该检查点恢复...Flink 版本升级:升级 Flink 本身也变得更容易,因为你可以获取正在运行数据流的保存点并使用升级后的 Flink 版本从保存点重新读取它们。...如何使用保存点,请查看有关保存点如何工作的文档以及如何如何使用命令行使用它们。

    72220

    Flink RocksDB State Backend:when and how

    为了防止发生故障时丢失数据,状态后端会定期将其内容快照保存到预先配置的持久性存储中。该RocksDB[1]状态后端(即RocksDBStateBackend)是Flink中的三个内置状态后端之一。...它始终存储在本地内存中(有可能溢出到磁盘中),并且在作业失败而不会影响作业可恢复性的情况下可能会丢失。...状态快照(即检查点[3]和保存点[4])存储在远程持久性存储中,用于在作业失败的情况下还原本地状态。选择适合生产部署的状态后端取决于系统的可伸缩性,吞吐量和延迟要求。 什么是RocksDB?...注意: 从Flink 1.10开始,通过将日志级别设置为HEADER[21],有效地禁用了RocksDB日志记录。要启用它,请查看如何获取RocksDB的LOG文件以进行高级故障排除[22]。...[4] 保存点: https://ci.apache.org/projects/flink/flink-docs-stable/ops/state/savepoints.html#what-is-a-savepoint-how-is-a-savepoint-different-from-a-checkpoint

    3.2K31

    全网最详细4W字Flink入门笔记(中)

    在一个流应用程序运行时,Flink 会定期保存检查点,在检查点中会记录每个算子的 id 和状态;如果发生故障,Flink 就会用最近一次成功保存的检查点来恢复应用的状态,重新启动处理流程,就如同“读档”...除了检查点之外,Flink 还提供了“保存点”(savepoint)的功能。保存点在原理和形式上跟检查点完全一样,也是状态持久化保存的一个快照;保存点与检查点最大的区别,就是触发的时机。...检查点是由 Flink 自动管理的,定期创建,发生故障之后自动读取进行恢复,这是一个“自动存盘”的功能;而保存点不会自动创建,必须由用户明确地手动触发保存操作,所以就是“手动存盘”。...因此两者尽管原理一致,但用途就有所差别了:检查点主要用来做故障恢复,是容错机制的核心;保存点则更加灵活,可以用来做有计划的手动备份和恢复。...例如在KafkaConsumer算子中维护offset状态,当系统出现问题无法从Kafka中消费数据时,可以将offset记录在状态中,当任务重新恢复时就能够从指定的偏移量开始消费数据。

    50822

    Flink实战(10)-checkpoint容错保证

    0 前言程序在 Flink 集群运行,某个算子因为某些原因出现故障,如何处理在故障恢复后,如何保证数据状态,和故障发生之前的数据状态一致?1 什么是 checkpoint(检查点)?...2 Checkpoint V.S StateState 指某个算子的数据状态,保存在堆内存Checkpoint 指所有算子的数据状态,持久化保存3 什么是savepoint(保存点)?...4 Checkpoint V.S SavepointCheckpoint 是 自动容错恢复机制,Savepoint 某个时间点的全局状态镜像Checkpoint 是 Flink 系统行为 。...Flink 中使用 Checkpoint Barrier(检查点分割线)来切分数据流当 Source 子任务收到 Checkpoint 请求,该算子会对自己的数据状态保存快照。...第2步当 Sink 算子已经收到所有上游的 Checkpoint Barrie 时,进行以下 2 步操作:保存自己的数据状态并直接通知检查点协调器检查点协调器在收集所有的 task 通知后,就认为这次的

    14200

    Flink Savepoints和Checkpoints的3个不同点

    保存点包含两个主要元素: 首先,Savepoint 包括一个包含(通常是很大的)二进制文件的目录,该二进制文件表示在 Savepoint和Checkpoint 生成镜像时流应用程序的整个状态 一个(相对较小的...阅读这篇文章之前,你可以阅读一下Flink 保存点之回溯时间。 上面所有关于 Savepoints 的内容听起来与我们在之前的文章中对 Checkpoints 的介绍非常相似。...Checkpoint 是 Apache Flink 用于故障恢复的内部机制,包括应用程序状态快照以及输入源读取到的偏移量。...可以阅读之前一篇关于Flink如何管理Kafka的消费偏移量的文章。 2....image.png 2.1 目标 从概念上讲,Flink 的 Savepoint 和 Checkpoint 的不同之处很像传统数据库中备份与恢复日志之间的区别。

    4K20
    领券