什么是checkpoint?

checkpoint 则表示了一个 Flink Job ,在一个特定时刻的一份全局状态状态快照,即包含了一个 job 下 所有

task/operator 某时刻的状态。

问题九、使用checkpoint(检查点)的作用?

使用Checkpoint提高程序的可靠性

用户可以根据程序里面的配置将checkpoint打开,给定一个时间间隔后,框架会按照时间间隔给程序的状态进行备份。

当发生故障时,Flink会将所有Task的状态一起恢复到Checkpoint的状态。从那个位置开始重新执行。

Flink也提供了多种正确性的保障,包括:

AT LEAST ONCE

Exactly once

备份为保存在State中的程序状态数据

Flink也提供了一套机制,允许把这些状态放到内存当中。做Checkpoint 的时候,由Flink去完成恢复。

从已停止作业的运行状态中恢复

当组件升级的时候,需要停止当前作业。这个时候需要从之前停止的作业当中恢复,Flink提供了2种机制恢复作业:

Savepoint(保存点):是一种特殊的checkpoint,只不过不像checkpoint定期的从系统中去触发的,它是用户通过命令触发,存储格式和checkpoint也是不相同的,

会将数据按照一个标准的格式存储,不管配置什么样,Flink都会从这个checkpoint 恢复,是用来做版本升级一个非常好的工具。

External Checkpoint:对已有checkpoint的一种扩展,就是说做完一次内部的一次Checkpoint后,还会在用户给定的一个目录中,多

数据恢复

checkpoint
保存
如果在控制台cancel任务,checkpoint都会被清空。所以不要cancel任务,而是停止集群,这样checkpoint目录的数据还会保留着。

$ tree
.
├── 21a531af31f6aeddff96f375abd60493
│ ├── chk-14
│ │ ├── 0fa3db43-a58b-47d7-8aa5-67d66f14d96d
│ │ └── _metadata
│ ├── chk-15
│ ├── shared
│ └── taskowned
├── 79362a5fc98b3d62c3d53e4dbae8681f
│ ├── chk-2
│ │ ├── 004e95c6-d381-494b-9e7e-65afacbfe85d
│ │ └── _metadata
│ ├── chk-3
│ ├── shared
│ └── taskowned
├── 7e04c0ae4ab086e497dcdbb81a54a7c1
│ ├── chk-3
│ │ ├── 2e79396f-1162-4f57-a0ad-8e0799031db7
│ │ └── _metadata
│ ├── chk-4
│ ├── shared
│ └── taskowned
└── 99c68672dec699ea9a85231a5ca472fa
├── chk-2
│ ├── _metadata
│ └── a6d866d8-dec1-4280-98ff-d167423b8f4e
├── chk-3
├── shared
└── taskowned

20 directories, 8 files
恢复
$ flink run -s /tmp/flink/checkpoints/7e04c0ae4ab086e497dcdbb81a54a7c1/chk-3/_metadata -c com.henshao.flink.StatefulSource target/flink-learning-1.0-SNAPSHOT.jar
从控制台可以看到任务是从7e04c0ae4ab086e497dcdbb81a54a7c1这个checkpoint恢复的。

从日志可以看出offset不是0开始的,而是从上次停止的时候开始的。

savepoint
保存

$ flink savepoint 21a531af31f6aeddff96f375abd60493 /tmp/flink/savepoints/
Triggering savepoint for job 21a531af31f6aeddff96f375abd60493.
Waiting for response...
Savepoint completed. Path: file:/tmp/flink/savepoints/savepoint-21a531-ea92d4b06909
You can resume your program from this savepoint with the run command.

恢复

$ flink run -s /tmp/flink/savepoints/savepoint-21a531-ea92d4b06909 -c com.henshao.flink.StatefulSource target/flink-learning-1.0-SNAPSHOT.jar
从控制台可以看到任务是从savepoint-21a531-ea92d4b06909恢复的。

Flink checkpoint机制以及恢复相关推荐

  1. Flink CheckPoint机制 学习 测试 使用FsStateBackend状态后端 将checkpoint恢复到中断处

    Flink CheckPoint机制 1.实验目的 目的 开启一个Flink程序,使用hdfs做状态后端,手动取消job后,再次恢复job测试,观察程序是否能恢复到检查点,继续读取并处理数据: 实验原 ...

  2. Flink Checkpoint 机制:如何保证 barrier 和数据之间不乱序?

    Flink Checkpoint 机制:如何保证 barrier 和数据之间不乱序? 1 前言 1.1 什么是 state? 要说 checkpoint,首先要从 state 聊起.之前有被问到对于 ...

  3. Flink Checkpoint机制分析

    原创作品,转载请标明:http://blog.csdn.net/xiejingfa/article/details/105439802 可靠性是分布式系统实现必须考虑的因素之一.Flink基于Chan ...

  4. Flink CheckPoint机制简介

    概述  Checkpoint是Flink实现容错机制最核心的功能,它能够根据配置周期性地基于Stream中各个Operator/task的状态来生成快照,从而将这些状态数据定期持久化存储下来,当Fli ...

  5. Flink checkpoint机制

    目录 1. checkpoint的用途 2. checkpoint的生成机制 3. checkpoint的状态存储 4. job的重启策略 5. 参考资料 可保证Flink集群在某个算子因为某些原因( ...

  6. flink checkpoint 恢复_Flink解析 | Apache Flink结合Kafka构建端到端的ExactlyOnce处理

    周凯波(宝牛) 阿里巴巴技术专家,四川大学硕士,2010年毕业后加入阿里搜索事业部,从事搜索离线平台的研发工作,参与将搜索后台数据处理架构从MapReduce到Flink的重构.目前在阿里计算平台事业 ...

  7. Flink——Flink CheckPoint之两阶段提交协议(Two-Phase Commit Protocol)

    文章目录 两阶段提交协议 1. 两阶段提交的前提条件 2. 两阶段提交的基本算法 a. 第一阶段(提交请求阶段) b. 第二阶段(提交执行阶段) 3. 两阶段提交的缺点 Flink-两阶段提交协议 1 ...

  8. flink checkpoint 恢复_Flink断点恢复机制

    作为流式计算,Flink通过checkpoint机制和kafka的可回溯性来保证作业在failover时不丢失状态. 作为生产环境的flink,我们期待做到快速failover.弹性扩缩容和平滑迁移, ...

  9. 2021年大数据Flink(二十七):Flink 容错机制 Checkpoint

    目录 Flink 容错机制 Checkpoint State Vs Checkpoint Checkpoint执行流程 简单流程 复杂流程 State状态后端/State存储介质 MemStateBa ...

最新文章

  1. 如何在vsc上选择远程miniconda特定的虚拟环境中的Python解释器(4步)
  2. 魅族Android10内测招募答案,10款机型升级Android 10!魅族Flyme即日起内测招募
  3. 图像基本处理算法的简单实现(二)
  4. SmartSVN:File has inconsistent newlines
  5. 1110: 最近共同祖先(函数专题)
  6. bzoj3572 [HNOI2014]世界树 虚树 +乱dp
  7. English - even though和even if用法解析
  8. SPSS 17.0中文版常用功能与应用实例精讲
  9. 【网络原理】期末复习笔记 第一章 概述
  10. 将GridView数据导出到Excel实现
  11. jquery提交表单错误
  12. 深度测试oppo软件,OPPO深度测试app
  13. Hive-003安装配置
  14. java 邮件批量发送邮件_利用Java实现电子邮件的批量发送
  15. 基于FFmpeg的iOS播放器(结构篇)
  16. wireshark如何抓取本机包
  17. 【开发环境】 Ubuntu14.04 安装Skyeye 1.3.5过程
  18. 二叉树遍历(递归、非递归)
  19. DXP多引脚封装绘制方式
  20. 浙江省数字化改革总体方案(附下载)

热门文章

  1. js-xlsx导入数据
  2. GitLab使用CAS服务进行单点登录配置
  3. Nexus搭建Maven私服全攻略一:认识Nexus与索引
  4. docker swarm和docker service
  5. 计算机机原理是什么意思,计算机工作原理及与工控机的区别
  6. cisco链路聚合 不均衡_思科CISCO交换机间链路聚合端口聚合实现方法详解
  7. Linux共享库概述
  8. Struts1.x 登录实验-无数据库版
  9. 《剑指offer》NO34 二叉树中和为某一值的路径 详解 <Java实现>
  10. su鉴定故障和su拒绝权限