首页  

flink job 快照机制 恢复机制 checkpoint 和 savepoint     所属分类 flink 浏览量 98
Job失败后,从检查点恢复

自动恢复机制 和 手动作业恢复机制

作业失败重启策略
定期恢复策略:fixed-delay。 
固定延迟重启策略会尝试一个给定的次数来重启Job,如果超过最大的重启次数,Job最终将失败,在连续两次重启尝试之间,重启策略会等待一个固定时间,默认Integer.MAX_VALUE次

失败比率策略:failure-rate。
失败率重启策略在job失败后重启,但是超过失败率后,Job会最终被认定失败,在两个连续的重启尝试之间,重启策略会等待一个固定的时间。

直接失败策略:None   失败不重启。


手动作业恢复机制
检查点目录分别对应的是JobId,每通过flink run 方式/页面提交方式恢复都会重新生成 jobId,
Flink 提供了在启动之时通过设置 -s 参数指定检查点目录的功能,让新的 job 读取该检查点元文件信息和状态信息 

checkpoint vs savepoint 

触发方式 自动  手动

主要功能
task异常 application异常 恢复  ,保证数据一致性 
按计划备份数据 , 作业升级备份 , 代码修改

特点
轻量级 支持增量  作业停止后默认删除 
持久化存储  可人为从savepoint恢复



从checkpoint 恢复 如果Flink程序异常失败,或者最近一段时间内数据处理错误,可以从某一个Checkpoint点,比如chk-860进行回放 bin/flink run -s hdfs://namenode01.td.com/flink-1.5.3/flink-checkpoints/582e17d2cc343e6c56255d111bae0191/chk-860/_metadata flink-app-jobs.jar 所有的Checkpoint文件都在以Job ID为名称的目录里面 当Job停掉后,重新从某个Checkpoint点(chk-860)进行恢复时,重新生成Job ID Checkpoint编号会从该次运行基于的编号继续连续生成:chk-861、chk-862、chk-863 checkpoint的建议 Checkpoint 间隔不要太短 过短的间对于底层分布式文件系统而言,会带来很大的压力。 Flink 作业处理 record 与执行 checkpoint 存在互斥锁,过于频繁的checkpoint,可能会影响整体的性能。 合理设置超时时间
conf/flink-conf.yaml 配置 Savepoint存储目录 state.savepoints.dir: hdfs://namenode01.td.com/flink/flink-savepoints 手动执行savepoint命令 ,指定Savepoint存储目录 bin/flink savepoint :jobId [:targetDirectory] 使用默认配置 bin/flink savepoint 40dcc6d2ba90f13930abce295de8d038 为正在运行的Flink Job指定一个目录存储Savepoint数据 bin/flink savepoint 40dcc6d2ba90f13930abce295de8d038 hdfs://namenode01.td.com/tmp/flink/savepoints 从Savepoint恢复 bin/flink run -s :savepointPath [:runArgs] bin/flink run -s hdfs://namenode01.td.com/tmp/flink/savepoints/savepoint-40dcc6-a90008f0f82f flink-app-jobs.jar
checkpoint 和 savepoint 作业快照机制 checkpoint的侧重点是“容错”,即Flink作业意外失败并重启之后,能够直接从早先打下的checkpoint恢复运行,且不影响作业逻辑的准确性。 savepoint的侧重点是“维护”,即Flink作业需要在人工干预下手动重启、升级、迁移或A/B测试时,先将状态整体写入可靠存储,维护完毕之后再从savepoint恢复现场。 savepoint是 通过checkpoint机制创建的,所以savepoint本质上是特殊的checkpoint checkpoint面向Flink Runtime本身,由Flink的各个TaskManager定时触发快照并自动清理,一般不需要用户干预 savepoint面向用户,完全根据用户的需要触发与清理。 checkpoint的频率往往比较高(因为需要尽可能保证作业恢复的准确度),所以checkpoint的存储格式非常轻量级, 但作为trade-off牺牲了一切可移植(portable)的东西,比如不保证改变并行度和升级的兼容性。 savepoint则以二进制形式存储所有状态数据和元数据,执行起来比较慢而且“贵”,但是能够保证portability,如并行度改变或代码升级之后,仍然能正常恢复。 checkpoint 支持增量(通过RocksDB),特别是对于超大状态的作业而言可以降低写入成本

上一篇     下一篇
GraphQL 基础

skywalking PromQL 服务 grafana 整合 图表配置

flinkcdc3.0 checkpoint 和 restart 策略 配置及测试

Grafana 告警设置

PromQL 基础

杭州登山路线2024