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

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

Apache Flink是一个开源的流处理框架,它可以处理无界和有界数据流。当使用Flink进行流处理时,可以通过检查点和保存点来实现状态的恢复。

  1. 检查点(Checkpoint):检查点是一种机制,用于定期将应用程序的状态保存到持久化存储中。检查点可以在流处理应用程序运行时创建,并且可以包含应用程序的所有状态信息,包括操作符的状态、事件时间和水位线等。检查点的创建是异步的,不会影响应用程序的处理速度。
  2. 保存点(Savepoint):保存点是检查点的一种特殊形式,它是一个具有唯一标识符的检查点。保存点可以手动创建,并且可以用于将应用程序的状态保存到持久化存储中,以便在需要时进行恢复。保存点可以用于应用程序的版本控制和回滚。

从检查点/保存点恢复状态的步骤如下:

  1. 创建检查点或保存点:在Flink应用程序中,可以通过调用env.enableCheckpointing(interval)来启用检查点功能,并设置检查点的触发间隔。在需要创建保存点时,可以使用命令行工具或API手动创建保存点。
  2. 恢复状态:当应用程序发生故障或需要恢复状态时,可以通过以下步骤来进行状态恢复:
    • 启动Flink应用程序,并指定要恢复的检查点或保存点的标识符。
    • Flink会自动从持久化存储中加载检查点或保存点的状态信息。
    • Flink会将状态信息分发给相应的操作符,并从状态信息中恢复它们的状态。
    • 应用程序会从故障发生时的状态继续处理数据。

需要注意的是,Flink支持多种状态后端(如RocksDB、HDFS等),可以根据实际需求选择适合的状态后端。

推荐的腾讯云相关产品和产品介绍链接地址:

  • 腾讯云流计算 Flink:https://cloud.tencent.com/product/tcflink
  • 腾讯云对象存储 COS:https://cloud.tencent.com/product/cos
  • 腾讯云云数据库 CDB:https://cloud.tencent.com/product/cdb
  • 腾讯云云服务器 CVM:https://cloud.tencent.com/product/cvm
  • 腾讯云云原生容器服务 TKE:https://cloud.tencent.com/product/tke

请注意,以上链接仅供参考,具体的产品选择应根据实际需求和情况进行评估和决策。

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

相关·内容

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

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

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 恢复作业运行的支持,非常方便。

51440

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.4K20

使用 Apache Flink 开发实时ETL

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

2.4K31

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

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

2.2K20

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.8K20

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

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

1K20

Flink1.4 保存之回溯时间

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

94710

Flink Kafka Connector

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

4.6K30

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

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

6.8K51

flink分析之Task的生命周期

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

1.5K40

聊聊Flink必知必会(七)

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

18310

Cloudera中的流分析概览

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

1.1K20

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

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

3.2K10

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

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

68820

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

2.9K31

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

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

43821

Flink Savepoints和Checkpoints的3个不同点

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

3.4K20

Flink——运行在数据流上的有状态计算框架和处理引擎

Flink提供了一些功能来确保应用程序保持运行并保持一致: 一致的检查点Flink恢复机制基于应用程序状态的一致的检查点。如果发生故障,将重新启动应用程序,并从最新的检查点加载其状态。...Flink保存是一项独特而强大的功能,可以解决更新有状态应用程序的问题以及许多其他相关挑战。保存是应用程序状态的一致快照,因此与检查点非常相似。...但是,与检查点相比,保存需要手动触发,并且在停止应用程序时不会自动将其删除。保存可用于启动状态兼容的应用程序并初始化其状态保存启用以下功能: 应用程序演化:保存可用于演化应用程序。...可以从先前版本的应用程序中获取的保存重新启动应用程序的固定版本或改进版本。也可以较早的时间启动应用程序(如果存在这样的保存),以修复有缺陷的版本产生的错误结果。...暂停和恢复:可以通过保存一个并停止它来暂停应用程序。在以后的任何时间,都可以保存恢复应用程序。 归档:可以将保存归档,以便将应用程序的状态重置为较早的时间

98420
领券