Flink checkpoint机制以及恢复

什么是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开始的,而是从上次停止的时候开始的。

image.png

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恢复的。

在这里插入图片描述

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值