本文详细讲解了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