大家好, 我们在 YARN 容器内运行以 RocksDB 作为 State Backend 的 Flink 作业,状态数据比较大(50G 以上,难以放到内存中)。但是由于 YARN 本身的 pmem-check 限制,经常会因为内存用量的不受控而导致整个 Container 被强制 KILL.
目前调研了 https://issues.apache.org/jira/browse/FLINK-7289 这个提议,但是目前还未完全实现。 也按照 RocksDB 官方的调优指南 https://github.com/facebook/rocksdb/wiki/RocksDB-Tuning-Guide 设置了 state.backend.rocksdb.writebuffer.size state.backend.rocksdb.writebuffer.count state.backend.rocksdb.block.cache-size state.backend.rocksdb.files.open 等等参数,但是目前观察到效果并不太明显,内存用量还是会不受控地越来越多。 请问各位是否有 RocksDB 作为状态后端的调优经验,例如在内存受限的情况下,尽量确保 RocksDB 的内存用量可控在一个封顶范围呢? 另外还有一个场景,假设内存够用的情况下,有哪些增加读写性能方面的建议呢?目前尝试使用 SSD 来存放 sst 文件,但是性能提升也不明显。 感谢 :)
