开发者社区 问答 正文

Flink中对于state不是很大,但是需要频繁checkpoint的任务,backendstate

Flink中对于state不是很大,但是需要频繁checkpoint的任务,backendstate是选file还是rockdb呀,看官档说的是rockdb适合state很大的任务,可能吞吐会降低。但是如果选用file的话对hdfs的压力又很大 *来自志愿者整理的flink邮件归档

展开
收起
雪哥哥 2021-12-07 16:18:16 620 分享
分享
版权
举报
1 条回答
写回答
取消 提交回答
  • 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

    2021-12-07 16:37:41 举报
    赞同 评论

    评论

    全部评论 (0)

    登录后可评论
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等