- 1.MemoryStateBackend(Default)
• 内存级的状态后端,会将键控状态作为内存中的对象进⾏管理,将它们存储在 TaskManager 的
JVM 堆上,⽽将 checkpoint 存储在 JobManager 的内存中
• 特点:快速、低延迟,但不稳定 - 2.FsStateBackend
• 将 checkpoint 存到远程的持久化⽂件系统( FileSystem )上,⽽对于本地状态,跟
MemoryStateBackend ⼀样,也会存在 TaskManager 的 JVM 堆上
• 同时拥有内存级的本地访问速度,和更好的容错保证 - 3.RocksDBStateBackend
• 将所有状态序列化后,存⼊本地的 RocksDB 中存储。
• RocksDB 是⼀个硬盘 KV 数据库, LevelDB , RocketDB
package com.claroja;
import org.apache.flink.runtime.state.filesystem.FsStateBackend;
import org.apache.flink.streaming.api.datastream.DataStreamSource;
import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment;
public class CheckPoint {
public static void main(String[] args) throws Exception {
StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
env.setParallelism(1);
env.enableCheckpointing(10 * 1000L);
env.setStateBackend(new FsStateBackend("file:///E:\\"));
DataStreamSource<SensorReading> stream = env.addSource(new SensorSource());
stream.print();
env.execute();
}
}