Flink中对于state不是很大,但是需要频繁checkpoint的任务,backendstate是选file还是rockdb呀,看官档说的是rockdb适合state很大的任务,可能吞吐会降低。但是如果选用file的话对hdfs的压力又很大 *来自志愿者整理的flink邮件归档
hi
首先,就算选择rocksDB statebackend,也是需要写HDFS的,只是在开启了incremental checkpoint方式情况下可以减少每次hdfs数据写入。
我觉得这个问题核心是一个trade off。不做checkpoint的时候,RocksDBStateBackend的读写性能不如纯内存的FsStateBackend。而在checkpoint的同步阶段,RocksDB stateBackend需要全量写本地磁盘,比FsStateBackend的内存操作可能要慢一些,也会影响吞吐。在checkpoint的异步阶段,由于RocksDB stateBackend支持增量上传,所以对HDFS的压力可能要更小一些;但同时,也可以通过打开对FsStateBackend的压缩[1] 来降低FsStateBackend对HDFS的压力。
如果你对吞吐很敏感的话,在state很小的时候,可以选择FsStateBackend,否则应该选择RocksDBStateBackend,可以避免OOM的风险。
[1] https://ci.apache.org/projects/flink/flink-docs-stable/ops/state/large_state_tuning.html#compression*来自志愿者整理的flink
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。