算子状态(Operator State)
- 算子状态的作用范围限定为算子任务
键控状态(Keyed State)
- 根据输入数据流中定义的键(key)来维护和访问
- 值状态(ValueState):将状态表示为单个的值
- 列表状态(List State):将状态表示为一组数据的列表
- 字典状态(MapState):将状态表示为一组Key-Value 对
- 聚合状态:将状态表示为一个用于聚合操作的列表
状态后端(State Backends)
- 状态的存储、访问以及维护,由一个可插入的组件决定,这个组件就叫做状态后端(state backend)
- 状态后端主要负责两二件事:本地的状态管理,以及将检查点(checkpoint)状态写入远程存储(HDFS、RocksDB 之类的)
一、MemoryStateBackend(Default)
- 内存级的状态后端,会将键控状态作为内存中的对象进行管理,将它们存储在TaskManager 的JVM 堆上,而将checkpoint 存储在JobManager 的内存中
- 特点:快速、低延迟,但不稳定
二、FsStateBackend
- 将checkpoint 存到远程的持久化文件系统(FileSystem)上,而对于本地状态,跟emoryStateBackend 一样,也会存在TaskManager 的JVM 堆上
- 同时拥有内存级的本地访问速度,和更好的容错保证
三、RocksDBStateBackend
- 将所有状态序列化后,存入本地的RocksDB 中存储。
- RocksDB 是一个硬盘KV 数据库,LevelDB,RocketDB