flink全量检查点和增量检查点

增量检查点和全量检查点

  目前Flink有3种状态后端,即(内存MemoryStateBackend)文件系统(FsStateBackend)和RocksDB(RocksDBStateBackend),只有RocksDB状态后端支持增量检查点,内存只能全量。该功能默认关闭,要打开它可以在flink-conf.yaml中配置,或者在代码中添加:

全量检查点含义

  1. 顾名思义就是每次记录都是所有的checkpoint信息;
  2. 全量检查点也是生成中常用的方式,默认checkpoint是不开启的,我们通常需要在代码中加入:
 // 开启一个每5分钟一次的检查点,并设置精准一次模式
env.enableCheckpointing(5 * 60 * 1000, CheckpointingMode.EXACTLY_ONCE);
  1. 生成环境中通常保存到HDFS中:
 // 配置存储检查点到文件系统
env.getCheckpointConfig().setCheckpointStorage(new FileSystemCheckpointStorage("hdfs://namenode:40010/flink/checkpoints"));

增量检查点的含义

  增量检查点只包含本次checkpoint与上次checkpoint状态之间的差异,而不是所有状态

  1. 为什么增量检查点只支持RocksDB?
    由RocksDB本身的特性决定的。RocksDB是一个基于日志结构合并(LSM树)的键值式存储引擎,
  2. 增量检查点的弊端
    2.1、 增量检查点解决了大状态checkpointing的问题,但是在从检查点恢复现场时会带来潜在的overhead。当程序出问题后,TaskManager需要从多个检查点中加载状态数据,并且这些数据中还可能会包含将被删除的状态。就算磁盘空间紧张,旧检查点的文件也不能随便删除,因为新检查点仍然会引用它们,如果贸然删除,程序就无法恢复现场了。
    2.2 、如果状态本身的数据量不大,并且状态之间的overlap也不明显的话,开启增量检查点可能会造成反效果(checkpoint数据量异常膨胀),所以应该按需使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值