Flink的Checkpoint

最近面试问的最多的就是Flink如何进行容错的,总结一下关于checkpoint的知识点

1、checkpoint是什么

将任务运行时的状态做一个快照,保存到稳定的存储系统中,当任务发生重启时,可以从保存的状态中重新恢复任务。

原理可以这么理解,当数据x从source出发的时候,JM会给x一个令牌,告诉x已经被监视,x把令牌展示给经过的operator,operator就把自己对x的state进行汇报到JM(持久化),一直到最后,JM收到所有的反馈后,就认为x已经完成了。如果x还没完成,任务就挂掉了。在从checkpoint恢复的时候,是从最近的一次(可指定,一般用最近的,除非你最近的有问题,你要回滚)checkpoint恢复状态,告诉任务x走了那一步,到什么位置了。

2、checkpoint存的什么

一般来说存储的是state的数据,另外也可以保存kafka的offset(数据重放)
同时既然存储的是数据,那么也需要进行定期清理。

3、checkpoint存到什么地方?

三种存储方式:

第一种是基于内存的,叫做MemoryStateBackend,将状态维护在jvm的堆中,默认大小为5M,一般用于本地测试,或者较小数据规模的场景,问题是一旦任务失败死掉是无法恢复的。

第二种是基于文件的,叫做FsStateBackend,一般将数据维护在hdfs中,TM的状态数据存到hdfs

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值