Flink 1.13,State Backend 優(yōu)化及生產(chǎn)實踐分享
鳥瞰 Flink 1.13 state-backend 變化
RocksDB state-backend 內(nèi)存管控優(yōu)化
Flink state-backend 模塊發(fā)展規(guī)劃
GitHub 地址 
一、鳥瞰 Flink 1.13 state-backend 變化
1. State 訪問的性能監(jiān)控

對于 RocksDB State Backend,性能損失大概在 1% 左右;
而對于 Heap State Backend,性能損失最多可達 10%。

2. 統(tǒng)一的 Savepoint 格式

3. 更清晰的 API
提供狀態(tài)的訪問、查詢;
如果開啟了 Checkpoint,會周期向遠程的 Durable storage 上傳數(shù)據(jù)和返回元數(shù)據(jù) (meta) 給 Job Manager (以下簡稱 JM)。


其中,State Backend 的概念變窄,只描述狀態(tài)訪問和存儲; 另外一個概念是 Checkpoint storage,描述的是 Checkpoint 行為,如 Checkpoint 數(shù)據(jù)是發(fā)回給 JM 內(nèi)存還是上傳到遠程。所以,相對應(yīng)的配置項也被拆開 。

4. RocksDB partitioned Index & filter

Data Block (真實數(shù)據(jù)) Index Block (每條數(shù)據(jù)的索引) Filter Block (對文件的 Bloom Filter)

state.backend.rocksdb.memory.partitioned-index-filters:true (默認 false) state.backend.rocksdb.block.metadata-blocksize (多級索引內(nèi)存配置)
5. 默認行為變化

不再支持 state.backend.async 配置項,所有的 Checkpoint 均是異步的 (同步 Checkpoint 場景很少,已去除);
state.backend.rocksdb.checkpoint.transfer.thread.num 默認值增大到 4 RocksDB 增量 Checkpoint 時,4 個線程多線程上傳文件 RocksDB從增量 Checkpoint 恢復(fù)數(shù)據(jù)時,采用 4 個線程多線程下載。
二、RocksDB state-backend 內(nèi)存管控優(yōu)化
Flink 1.10 開始做 state-backend 內(nèi)存優(yōu)化,在之后的每個版本中都有相關(guān)改進。






三、 Flink state-backend 模塊發(fā)展規(guī)劃
在 Flink 的未來規(guī)劃里,基于 Changelog 的更快速更通用的增量 Checkpoint 機制,正在開發(fā)中。而目前只有 RocksDB 支持增量 Checkpoint。

評論
圖片
表情
