flink rocksdb相关配置优化

常见的配置信息如下:

table.dynamic-table-options.enabled=true;
state.backend.rocksdb.compaction.style=level;
state.backend.rocksdb.thread.num=8;
table.exec.mini-batch.enabled=true;
table.exec.mini-batch.size=1000;
table.optimizer.distinct-agg.split.enabled=true;
state.backend.rocksdb.block.blocksize=32 kb;
state.backend.rocksdb.writebuffer.number-to-merge=2;
table.exec.mini-batch.allow-latency=15s;

后续配置根据任务在做详细分析. 

因为上述配置给的缓存有点小,可以适当增加内存使用,同时如果有groupby或者keyby算子情况可以做两阶段聚合优化,同时增加managed内存的使用。需要说明的是这些配置不是一成不变的,需要具体任务具体调优

state.backend.incremental=true;

--增加flink管理内存
taskmanager.memory.managed.fraction =0.3;

--rocksdb blockcache和writebuffer的内存也增大
state.backend.rocksdb.block.blocksize=64 kb;
state.backend.rocksdb.block.cache-size=128 mb;
state.backend.rocksdb.files.open = -1;
state.backend.rocksdb.writebuffer.size =128 mb;
state.backend.rocksdb.writebuffer.count=4;
state.backend.rocksdb.writebuffer.number-to-merge=2;

-- 增加合并的线程数,加快flush和compaction速度

state.backend.rocksdb.compaction.style=level;
state.backend.rocksdb.thread.num=8;
state.backend.rocksdb.metrics.block-cache-usage=true;
state.backend.rocksdb.checkpoint.transfer.thread.num=8;

--grouby相关参数调优,如果没有聚合下面相关可以考虑不用

table.dynamic-table-options.enabled=true;
table.exec.mini-batch.enabled=true;
table.exec.mini-batch.size=50000;
table.optimizer.distinct-agg.split.enabled=true;
table.exec.mini-batch.allow-latency=15s;
--两阶段优化
table.optimizer.agg-phase-strategy=TWO_PHASE;

参考文档:

Flink RocksDB 状态后端参数调优实践-阿里云开发者社区

大状态与 Checkpoint 调优 | Apache Flink

字节相关关于rocksdb的优化文档:

字节跳动使用 Flink State 的经验分享-51CTO.COM

你可能感兴趣的:(java,flink,flink,大数据,big,data)