本文详细讲解了Flink StateBackend的三大实现及OperatorState管理机制:
核心内容包括:
- 三种StateBackend:MemoryStateBackend(状态存JobManager内存)、FsStateBackend(状态存TM内存,Checkpoint存文件系统)、RocksDBStateBackend(状态存本地RocksDB,支持超大状态)
- ManagedOperatorState使用:通过实现CheckpointedFunction或ListCheckpointed接口访问non-keyed state
- 状态重分配模式:Event-split redistribution(均匀分配)、Union redistribution(每个算子获取全部状态)
- 内存数据结构:ListState对应PartitionableListState(ArrayList),BroadcastState对应HeapBroadcastState(HashMap)
- 配置方式:Per-job通过StreamExecutionEnvironment设置,默认在flink-conf.yaml中配置state.backend
- Checkpoint配置:enableCheckpointing()、setCheckpointingMode()、setMinPauseBetweenCheckpoints()等关键参数
使用ManageOperatorState:
- CheckpointedFunction接口说明
- ListCheckpointed接口说明
- Even-split redistribution模式
- Union redistribution模式
- StateBackend保存机制(MemoryStateBackend、FsStateBackend、RocksDBStateBackend)
- 配置StateBackend
- 开启Checkpoint