RocksDBStateBackend也通过配置文件系统路径来配置,例如:“hdfs://namenode:40010/flink/checkpoints” 或者 “file:///data/flink/checkpoints”,RocksDBStateBackend内部默认会构造一个FsStateBackend来初始化checkpointStreamBackend属性,在实现StateBackend接口的resolveCheckpoint和createCheckpointStorage方法时实际上调用chec...
1)配置文件flink-conf.yaml配置 # 默认状态后端 state.backend: hashmap # 存放检查点的文件路径 state.checkpoints.dir: hdfs://hadoop102:8020/flink/checkpoints 2)代码中指定 StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment(); // 1. 使用 hashmap状态后端 env.setStateBac...
1.3 状态后端的配置 1、状态后端(State Backends) 在Flink中,状态的存储、访问以及维护,都是由一个可插拔的组件决定的,这个·组件就叫状态后端(state backend)。状态后端主要负责管理本地状态的储存方式和位置。 1.1 状态后端的分类(HashMapStateBackend/RocksDB) 状态后端是一个“开箱即用”的组件,可以在不改变应用...
//env.setStateBackend(new MemoryStateBackend()); env.setStateBackend(new FsStateBackend("", true)) //env.setStateBackend(new RocksDBStateBackend("")) // 2. 检查点配置 开启checkpoint env.enableCheckpointing(1000); env.getCheckpointConfig().setCheckpointingMode(CheckpointingMode.EXACTLY_ONCE);...
综上所述,MemoryStateBackend 和 FsStateBackend 都是在内存中进行状态管理,所以可以获取较低的读写延迟,但会受限于 TaskManager 的内存大小;而 RocksDBStateBackend 直接将 State 存储到 RocksDB 数据库中,所以不受 JobManager 的内存限制,但会有读写延迟,同时 RocksDBStateBackend 支持增量备份,这是其他两个都不...
FsStateBackend需要配置的主要是文件系统,如 URL(类型,地址,路径)。举个例子,比如可以是: “hdfs://namenode:40010/flink/checkpoints”或“s3://flink/checkpoints” 当选择使用FsStateBackend时,正在进行的数据会被存在TaskManager的内存中。在checkpoint时,此后端会将状态快照写入配置的文件系统和目录的文件中,同时...
# 设置为FsStateBackend state.backend: filesystem # 配置文件储存路径 state.checkpoints.dir: hdfs://namenode:40010/flink/checkpoint 1. 2. 3. 4. 5. 如果不想集群配置的State Backend满足不了,我们也可以通过在代码层面进行修改,如: StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEn...
默认情况下,状态保存在TaskManager的内存中,检查点存储在JobManager的内存中。为了适当地存储较大的状态,Flink也支持多种方法在其他状态终端存储状态以及对状态进行检查点操作。状态终端的选择可以通过StreamExecutionEnvironment.setStateBackend(...)来配置。
前面的几个代码都是单 job 配置状态后端,也可以全局配置状态后端,需要修改 flink-conf.yaml配置文件: 1 state.backend:filesystem 其中: filesystem 表示使用 FsStateBackend jobmanager 表示使用 MemoryStateBackend rocksdb 表示使用 RocksDBStateBackend