Flink 1.13,State Backend 优化及生产实践分享
浪尖聊大数据
共 5891字,需浏览 12分钟
·
2021-07-02 11:52
鸟瞰 Flink 1.13 state-backend 变化
RocksDB state-backend 内存管控优化
Flink state-backend 模块发展规划
一、鸟瞰 Flink 1.13 state-backend 变化
1. State 访问的性能监控
对于 RocksDB State Backend,性能损失大概在 1% 左右;
而对于 Heap State Backend,性能损失最多可达 10%。
2. 统一的 Savepoint 格式
3. 更清晰的 API
提供状态的访问、查询;
如果开启了 Checkpoint,会周期向远程的 Durable storage 上传数据和返回元数据 (meta) 给 Job Manager (以下简称 JM)。
其中,State Backend 的概念变窄,只描述状态访问和存储; 另外一个概念是 Checkpoint storage,描述的是 Checkpoint 行为,如 Checkpoint 数据是发回给 JM 内存还是上传到远程。所以,相对应的配置项也被拆开 。
4. RocksDB partitioned Index & filter
Data Block (真实数据) Index Block (每条数据的索引) Filter Block (对文件的 Bloom Filter)
state.backend.rocksdb.memory.partitioned-index-filters:true (默认 false) state.backend.rocksdb.block.metadata-blocksize (多级索引内存配置)
5. 默认行为变化
不再支持 state.backend.async 配置项,所有的 Checkpoint 均是异步的 (同步 Checkpoint 场景很少,已去除);
state.backend.rocksdb.checkpoint.transfer.thread.num 默认值增大到 4 RocksDB 增量 Checkpoint 时,4 个线程多线程上传文件 RocksDB从增量 Checkpoint 恢复数据时,采用 4 个线程多线程下载。
二、RocksDB state-backend 内存管控优化
Flink 1.10 开始做 state-backend 内存优化,在之后的每个版本中都有相关改进。
三、 Flink state-backend 模块发展规划
在 Flink 的未来规划里,基于 Changelog 的更快速更通用的增量 Checkpoint 机制,正在开发中。而目前只有 RocksDB 支持增量 Checkpoint。
评论