1 Flink-StateBackend
1.1 MemoryStateBackend
- 特点
- 基于JVM堆内存,会有oom风险(TM,JM)
- 持久化时,State网络传输到JM机器,同样存在JM的内存中
- 适用
- 开发测试
- 状态小的流计算场景,比如比如只包含数据过滤和转换以及数据源的消费位置
1.2 FsStateBackend
- 特点
- 基于JVM堆内存,会有oom风险(TM)
- 持久化时,State存在TM的文件系统,只传输文件名和文件目录传输到JM
- 适用
- 大状态(前提是TM分摊可以承受)
1.3 RocksDBStateBackend
- 特点
- 基于RocksDB,本地文件系统
- 状态不上传到JM,增量CP性能优势(?)持久化State
- 适用
- 大状态
2 Flink容错-State
使用StateBackend拉取状态重新执行
3 Flink容错-拓扑变化升级
比如下面的sink减少
需要执行命令多加参数 -- allowNonRestoredState
比如下面的算子增加
一般operator指定uid命名,重启会根据uid映射算子
4 Flink容错-Source