选择一个状态后端(state backend)

选择一个状态后端(state backend)

  • MemoryStateBackend

内存级的状态后端,会将键控状态作为内存中的对象进行管理,将它们存储在TaskManager的JVM堆上;而将checkpoint存储在JobManager的内存中。

  • FsStateBackend

将checkpoint存到远程的持久化文件系统(FileSystem)上。而对于本地状态,跟MemoryStateBackend一样,也会存在TaskManager的JVM堆上。

  • RocksDBStateBackend

将所有状态序列化后,存入本地的RocksDB中存储。

注意:RocksDB的支持并不直接包含在flink中,需要引入依赖:

<dependency>
    <groupId>org.apache.flink</groupId>
    <artifactId>flink-statebackend-rocksdb_2.11</artifactId>
    <version>1.10.0</version>
</dependency>

 

设置状态后端为FsStateBackend:

val env = StreamExecutionEnvironment.getExecutionEnvironment

val checkpointPath: String = ???

val backend = new RocksDBStateBackend(checkpointPath)

 

env.setStateBackend(backend)

env.setStateBackend(new FsStateBackend("file:///tmp/checkpoints"))

env.enableCheckpointing(1000)

// 配置重启策略

env.setRestartStrategy(RestartStrategies.fixedDelayRestart(60, Time.of(10, TimeUnit.SECONDS)))

©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页