MemoryStateBackend
-
构造反方
- MemoryStateBackend(int maxStateSize, boolean asynchronousSnapshots)
-
存储方式
- State: TaskManager内存
- checkpoint: JobManager内存
-
容量限制
- 单个state maxStateSize默认5M
- maxStateSize <= akka.framesize默认10M
- 总大小不超过JobManager的内存
-
推荐使用场景
- 本地测试:几乎无状态的作业,比如:ETL; JobManager不容易挂,或者挂掉影响不大
- 不推荐生产场景使用
FsStateBackend
-
构造方法
- FsStateBackEND(URI checkpointDataUri, boolean asynchronousSnapshots)
-
存储方式
- State: TaskManager内存
- Checkpoint: 外部文件系统(本地或HDFS)
-
容量限制
- 单TaskManager上State总量不超过它的内存
- 总大小不超过配置的文件系统容量
-
推荐使用的场景
- 常规使用状态的作业,例如分钟级窗口聚合、join;需要开启HA的作业
- 可以在生产场景使用
RocksDBStateBackend
-
构造方法
- RocksDBStateBackend(URI checkpointDataUri, boolean enableIncrementalCheckpointing)
-
存储方式
- State: TaskManager上的KV数据库(实际使用内存+磁盘)
- Checkpoint: 外部文件系统(本地或HDFS)
-
容量限制
- 单TaskManager上State总量不超过他的内存+磁盘
- 单key最大2G
- 总大小不超过配置的文件系统
-
推荐使用场景
- 超大状态的作业,例如天级窗口聚合;需要开启HA的作业;对状态读写性能要求不高的作业
- 可以在生产场景使用