导读:本文来自用户投稿,介绍了 Dinky 如何通过 SavePoint 来恢复 FlinkSQL 作业。...,在页面右上角点击三个点的省略号按钮,弹出框中点击 “SavePoint停止”: 在 HDFS 中可以看到相关的 SavePoint 保存记录: 点击链接查看: 在Dinky 的运维中心,任务列表...,任务详情页面,作业快照sheet下面的SavePoint 这个 Sheet 下,也可以看到 SavePoint 保存的路径信息: 在 Dinky 的数据开发的作业中, 右边“保存点”栏也可以查看到...重启作业 在 Dinky 的运维中心,任务列表,任务详情页面,重启任务;任务重启完成后,可以看到,FlinlSQL 作业实现了从 SavePoint 中的状态恢复,找到 Kafka 的正确偏移,在任务停止期间进行...,不仅简化了 FlinkSQL 的开发调试,还集成了对从 SavePoint 恢复作业运行的支持,非常方便。
验证 我们使用经典的 WordCount 实例来验证从 Checkpoint 中恢复作业并能沿用之前的状态信息。...为了模拟作业失败并能恢复,我们判断当我们输入是 “ERROR” 时,抛出异常迫使作业失败: public void flatMap(String value, Collector out) {...{ throw new RuntimeException("custom error flag, restart application"); } ... } 为了确保作业在失败后能自动恢复...flink-example/target/flink-example-1.0.jar image.png 下表是从 nc 服务输出测试数据,从 Flink Web 页面输出结果数据的详细信息: 序号...) 9 ERROR 作业重启 10 b (b,3) 11 ERROR 作业失败 从上面信息可以看出作业恢复后,计算结果也是基于作业失败前保存的状态上计算的。
Flink从1.13版本开始支持在SQL Client从savepoint恢复作业。...flink-savepoint介绍 接下来我们从Flink SQL Client构建一个mysql cdc数据经kafka入hudi数据湖的例子。...整体流程如下: 在上述第二步中,我们通过手工停止kafka→hudi的Flink任务,然后在Flink SQL Client从savepoint进行恢复。...hudi作业并停止任务 bin/flink stop --savepointPath hdfs://hadoop:9000/flink-1.13-savepoint/ 0128b183276022367e15b017cb682d61...Path: hdfs://hadoop:9000/flink-1.13-savepoint/savepoint-0128b1-8970a7371adbCopy 从savepoint恢复任务:(在Flink
您可以使用Flink大规模处理数据流,并通过流式应用程序提供有关已处理数据的实时分析见解。 Flink旨在在所有常见的群集环境中运行,以内存速度和任意规模执行计算。...任务的资源管理由Flink中的作业管理器完成。在Flink群集中,Flink作业作为YARN应用程序执行。HDFS用于存储恢复和日志数据,而ZooKeeper用于对作业进行高可用性协调。 ?...您可以使用Flink将应用程序的状态本地存储在状态后端中,以确保在访问已处理数据时降低延迟。您还可以创建检查点和保存点,以在持久性存储上对流式应用程序进行容错备份。 ?...检查点和保存点 可以创建检查点和保存点,以使Flink应用程序在整个管道中容错。Flink包含一个容错机制,该机制可以连续创建数据流的快照。快照不仅包括数据流,还包括附加的状态。...如果发生故障,则选择最新快照,然后系统从该检查点恢复。这保证了可以始终保持计算结果的一致性。当检查点由Flink创建和管理时,保存点由用户控制。保存点可以描述为已执行过程的备份。 ?
此外,新版本还简化了在容器管理基础设施(如 Kubernetes)上进行的部署,所有对 JobManager 的请求都通过 REST 发起,包括提交和取消作业、请求作业状态,获取保存点等。...此次改进也为 Flink 将来与 Kubernetes 更好的集成奠定了基础。在稍后的版本中,有可能在不先启动 Flink 集群的情况下,将作业塞进 Docker,并作为容器部署的一部分。...当然,广播状态也可以有保存点或进行保存点恢复,就像 Flink 的其他状态一样,也具有一次性(exactly once)状态一致性保证。...Flink 现在支持 OpenStack 的类 S3 文件系统 Swift,用于保存检查点和保存点。Swift 可以在没有 Hadoop 依赖的情况下使用。...应用程序可以在无需手动触发保存点的情况下进行伸缩。实际上,Flink 仍然会保存一个保存点,然后停止应用程序并重新调整并行度。
恢复保存点时对模式迁移的新支持 使用Flink 1.7.0,我们在使用AvroSerializer时添加了对更改状态模式的支持。...保存点兼容性 TraversableSerializer 此序列化程序(FLINK-11539)中的更新,包含Scala的Flink 1.2中的保存点将不再与Flink 1.8兼容。...考虑这个例子:如果你有一个正在消耗topic的Kafka Consumer A,你做了一个保存点,然后改变你的Kafka消费者而不是从topic消费B,然后从保存点重新启动你的工作。...同时,这一版本还推出了 State Processor API,这是社区最迫切需求的功能之一,该 API 使用户能够用 Flink DataSet 作业灵活地读写保存点。...细粒度批作业恢复 (FLIP-1) 批作业(DataSet、Table API 和 SQL)从 task 失败中恢复的时间被显著缩短了。
不管这种多样性如何,Flink群集的基本组成都相同,并且适用类似的操作原理。 如何快速的搭建一套Flink与Kafka的本地环境,供我们开发学习使用呢?...Flink官网提供了一个环境,在这个环境中可以学习如何管理和运行Flink Jobs。可以学习如何部署和监视应用程序,体验Flink如何从作业失败中恢复,以及执行日常操作任务,例如升级和缩放。...Flink官方提供了一套学习环境,本文将详细介绍这套环境的搭建与使用过程。 此环境由一个Flink 集群和一个Kafka群集组成。...Flink群集始终由一个Flink Master 和一个或多个 Flink TaskManager 组成。Flink Master负责处理作业提交,作业的监督以及资源管理。...Flink TaskManager是工作进程,负责执行构成Flink作业的实际任务执行。 启动时,名为Flink Event Count的Flink作业将提交给JobManager。
该问题会触发 ResourceManager 对 JobManager 的重新初始化过程,作业也会从最近的一次 Checkpoint 恢复。...但是如果没有配置 HA(High Availability,高可用)时,Flink 就无法正常恢复作业,造成运行中关键状态的丢失,这对线上业务是无法接受的。...毕竟,这种可恢复的异常,可能会在一个长期运行作业的运行周期内多次出现,平台方需要考虑到细粒度的容错,令客户的作业能够长期平稳运行。...后来我们偶然间发现,重启 API Server 服务可以复现该问题,因为新启动的 API Server 会从 etcd 中获取当前最新 resourceVersion,如果客户端后续用保存的旧值请求的话...我们还在作业运行期间模拟单个和多个 TaskManager Pod 崩溃的场景,也可以正常地重新分配新的 Pod 并自动恢复作业,说明 Kubernetes Client 与服务端的后续通信都是正常的。
仅使用Flink的DataStream应用程序。在这种情况下,您需要创建一个Flink应用程序集群。 将Flink与SQL Stream Builder结合使用的SQL Streaming应用程序。...在这种情况下,您需要创建一个Streaming SQL群集。 您可以使用以下工作流程来了解部署过程: ?...您需要根据强制依赖性将Flink Gateway和HistoryServer角色分配给主机。 Flink作业作为YARN应用程序执行。...HDFS用于存储恢复和日志数据,而ZooKeeper用于作业的高可用性协调。在标准布局中,Apache Kafka群集通常位于执行Flink群集的YARN群集附近。...但是由于其与Flink的依赖关系,您还需要在群集上添加YARN、HDFS和Zookeeper作为强制性服务。您需要以与分配Flink角色相同的方式分配SSB角色。
四、资源分配策略 在本节中,我们将讨论Flink运行时中的slot分区机制和资源分配策略,包括Flink运行时如何选择TaskManager来切割slot,以及如何在本机Kubernetes和Thread...当没有足够可用资源的TaskManager时,Flink将在本机Kubernetes或Thread上部署时尝试分配新的TaskManager。...在当前策略中,Flink将根据用户的配置分配相同的TaskManager。由于TaskManager的资源规格是预定义的: 群集中可能有资源片段。...slotmanager.redundant-taskmanager-num用于启动冗余taskmanager以加快作业恢复。此配置选项目前不会在细粒度资源管理中生效。 不支持均匀分布的slot策略。...细粒度资源管理和群集的第一个版本不支持此策略。均匀分布的slot目前不会在其中生效。 与Flink的Web UI的集成有限。细粒度资源管理中的slot可以具有不同的资源规格。
在提交作业之前,必须先创建好Flink session集群。...; 2)用户可以将Flink、作业Jar包和classpath依赖打包到自己的镜像里; 3)作业运行图由Flink Master生成,所以无需通过RestClient上传Jar包(图2步骤3)。...而通过Flink-operator,我们可以把Flink集群描述成yaml文件,这样,借助Kubernetes的声明式特性和协调控制器,我们可以直接管理Flink集群及其作业,而无需关注底层资源如Deployment...自定义保存点 用户可以指定autoSavePointSeconds和保存路径,flink operator会自动为用户定期保存快照。 自动恢复 流式任务往往是长期运行的,甚至2-3年不停止都是常见的。...用户可以指定任务重启策略,当指定为FromSavePointOnFailure,flink operator自动从最近的保存点重新执行任务。
它始终存储在本地内存中(有可能溢出到磁盘中),并且在作业失败而不会影响作业可恢复性的情况下可能会丢失。...状态快照(即检查点[3]和保存点[4])存储在远程持久性存储中,用于在作业失败的情况下还原本地状态。选择适合生产部署的状态后端取决于系统的可伸缩性,吞吐量和延迟要求。 什么是RocksDB?...因此,state.checkpoints.dir[10]或者您在代码中为特定作业设置的参数可以位于不同的位置,例如本地HDFS[11]群集或基于云的对象存储,例如Amazon S3[12],Azure...优化RocksDB 从Flink 1.10开始,Flink默认将RocksDB的内存分配配置为每个任务slot的托管内存量。...[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
Robert所涉及的主题之一是如何粗略地确定Apache Flink集群的大小。 Flink Forward的与会者提到他的群集大小调整指南对他们有帮助,因此我们将他的谈话部分转换为博客文章。...示例Flink流式处理作业和硬件 ? 示例Flink Streaming作业拓扑 对于此示例,我将部署一个典型的Flink流式作业,该作业使用Flink的Kafka使用者从Kafka主题读取数据。...到目前为止,我只查看了Flink正在处理的用户数据。 您需要将存储状态和检查点保存在RocksDB中而进行的磁盘访问的开销包括在内。 要了解磁盘访问成本,请查看窗口运算符如何访问状态。...如果计算机或其他任何其他设备出现故障,您需要恢复窗口内容并继续处理。 检查点设置为每分钟一个检查点的间隔,每个检查点将作业的整个状态复制到网络附加文件系统中。...这为我所掩盖的复杂性保留了大约40%的网络容量,例如网络协议开销,从检查点恢复时事件重放期间的高负载,以及由数据偏差导致的集群内不均衡的负载平衡。
Flink Flink 核心特点 批流一体 所有的数据都天然带有时间的概念,必然发生在某一个时间点。把事件按照时间顺序排列起来,就形成了一个事件流,也叫作数据流。...转化为ExecutionGraph,调度Task的执行,并处理Task的异常) InputSplit 分配 结果分区跟踪 作业执行异常 作业Slot资源管理 检查点与保存点 监控运维相关 心跳管理 Task...Exaacly-Once (端到端严格一次) 保存点恢复 算子顺序的改变,如果对应的UID没变,则可以恢复,如果对应的UID变了则恢复失败。...从作业中删除了一个有状态的算子,默认需要恢复保存点中所记录的所有算子的状态,如果删除了一个有状态的算子,从保存点恢复的时候被删除的OperatorID找不到,所以会报错,可以通过在命令中添加-allowNonRestoredState...添加和删除无状态的算子,如果手动设置了UID,则可以恢复,保存点中不记录无状态的算子,如果是自动分配的UID,那么有状态算子的UID可能会变(Flink使用一个单调递增的计数器生成UID,DAG改版,计数器极有可能会变
外部检查点 Externalized Checkpoints 默认情况下检查点不会持久化存储在外部系统中,只是用来从故障中恢复作业。当一个程序被取消时它们会被删除。...但是,你可以配置检查点定期持久化存储在外部系统中,类似于保存点(savepoints)。这些外部持久化的检查点将其元数据写入持久性存储中,即使在作业失败时也不会自动清除。...这样,如果你的作业失败时,你会有一个检查点用于恢复作业。...2.3 从外部检查点恢复 作业可以通过使用检查点的元数据文件从外部检查点中恢复,就像从保存点恢复一样(请参阅保存点恢复)。...Checkpoints 外部检查点 savepoints 保存点 原文:https://ci.apache.org/projects/flink/flink-docs-release-1.4/ops
保存点:版本化状态 在 Flink 中,我们引入了保存点功能,可以解决上述问题以及未来更多问题。保存点可以从正在运行的 Flink 作业上获取,实质上是在一个时间点上定义可以从外部访问的作业的快照。...要从保存点恢复作业,只需运行如下即可: flink run -s pathToSavePoint jobJar 使用保存点,不必从头开始重新读取事件流以重新填充 Flink 作业的状态,因为你可以随时获取一致性快照并从该检查点恢复...他们都可以用来恢复作业。举个例子,利用 t1 时间点的保存点,我们使用修改了的应用程序代码来恢复作业,创建 v1 作业。在时间 t3 和 t4,分别从版本 v0 和 v1 获取更多的保存点。...通过获取作业的保存点,使用新的代码从该保存点重新启动,下游应用程序看不到任何差异。...Flink 版本升级:升级 Flink 本身也变得更容易,因为你可以获取正在运行数据流的保存点并使用升级后的 Flink 版本从保存点重新读取它们。
扩展组件(全部可选) 高可用服务 Flink 的 JobManager 可以在高可用模式下运行,这允许 Flink 从 JobManager 故障中恢复。...Zookeeper Kubernetes HA 文件存储与持久化 对于检查点(流式作业的恢复机制),Flink 依赖于外部文件存储系统 See FileSystems page....资源提供 Flink 可以通过不同的 Resource Provider Framework 进行部署,例如 Kubernetes 或 YARN。...FLINK-26606 涵盖了这一点。...除了对导致故障的作业产生负面影响外,这意味着潜在的大规模恢复过程,所有重新启动的作业同时访问文件系统并使其对其他服务不可用。
检查点允许 Flink 在流中恢复状态和位置,为应用程序提供与无故障执行相同的语义。 关于 Flink 流式容错机制背后的技术请参阅流式容错的详细文档。 1....前提条件 Flink 的检查点机制与流和状态的持久存储进行交互。一般来说,它要求: 一个可持久化(或保存很长时间)的数据源,可以重放特定时间段的记录。...(5) 外部检查点externalized checkpoints:可以配置定期检查点持久化到从外部存储中。外部检查点将其元数据写入持久性存储,作业失败时也不会自动清理。...这样,如果你的作业失败,你将会有一个检查点用来恢复。有关外部检查点的部署说明中有更多详细信息。...有关可用状态终端以及作业范围和群集范围内配置选项的的详细信息,请参阅状态终端。 5. 迭代作业中的状态检查点 目前 Flink 只为无迭代作业提供处理保证。在迭代作业上启用检查点会导致异常。
本节概述了 Flink 架构,并且描述了其主要组件如何交互以执行应用程序和从故障中恢复。...checkpoint、并且协调从失败中恢复等等。...image.png Flink 应用程序执行 Flink 应用程序 是从其 main() 方法产生的一个或多个 Flink 作业的任何用户程序。...以前,Flink Job 集群也被称为 job (or per-job) 模式下的 Flink 集群。 Kubernetes 不支持 Flink Job 集群。...请参考 Standalone Kubernetes 和 Native Kubernetes。
这样当作业失败之后,就可以通过远程⽂件系统⾥⾯保存的 Checkpoint 来进⾏回滚:先把 Source 回滚到 Checkpoint 记录的offset,然后把有状态节点当时的状态回滚到对应的时间点...JobManager扮演着集群中的管理者Master的角色,它是整个集群的协调者,负责接收Flink Job,协调检查点,Failover 故障恢复等,同时管理Flink集群中从节点TaskManager...Snapshots:实现了数据的快照、故障的恢复,保证数据⼀致性和作业的升级迁移等。...那为什么需要全局快照呢,主要有以下两点: 第⼀,⽤它来做检查点,可以定期对全局状态做备份,当应⽤程序故障时,就可以拿来恢复; 第⼆,做死锁检测,进⾏快照后当前的程序继续运⾏,然后可以对快照进⾏分 析,看应...使用群集定义的重新启动策略。这对于启用检查点的流式传输程序很有帮助。默认情况下,如果没有定义其他重启策略,则选择固定延迟重启策略。
领取专属 10元无门槛券
手把手带您无忧上云