State Backends
当需要对具体的某一种 State 做 Checkpoint 时,此时就需要具体的状态后端存储,刚好 Flink 内置提供了不同的状态后端存储,用于指定状态的存储方式和位置。状态可以存储在 Java 堆内存中或者堆外,在 Flink 安装路径下 conf 目录中的 flink-conf.yaml 配置文件中也有状态后端存储相关的配置,为此在 Flink 源码中还特有一个 CheckpointingOptions 类来控制 state 存储的相关配置,该类中有如下配置:
state.backend: 用于存储和进行状态 checkpoint 的状态后端存储方式,无默认值
state.checkpoints.num-retained: 要保留的已完成 checkpoint 的最大数量,默认值为 1
state.backend.async: 状态后端是否使用异步快照方法,默认值为 true
state.backend.incremental: 状态后端是否创建增量检查点,默认值为 false
state.backend.local-recovery: 状态后端配置本地恢复,默认情况下,本地恢复被禁用
taskmanager.state.local.root-dirs: 定义存储本地恢复的基于文件的状态的目录
state.savepoints.dir: 存储 savepoints 的目录
state.checkpoints.dir: 存储 checkpoint 的数据文件和元数据
state.backend.fs.memory-threshold: 状态数据文件的最小大小,默认值是 1024
虽然配置这么多,但是