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

classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

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

yeyi9999
 Flink中对于state不是很大,但是需要频繁checkpoint的任务,backendstate是选file还是rockdb呀,看官档说的是rockdb适合state很大的任务,可能吞吐会降低。但是如果选用file的话对hdfs的压力又很大
Reply | Threaded
Open this post in threaded view
|

Re: Flink中对于state不是很大,但是需要频繁checkpoint的任务,backendstate是选file还是rockdb?

Yun Tang
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

祝好
唐云

________________________________
From: [hidden email] <[hidden email]>
Sent: Wednesday, July 3, 2019 11:34
To: user-zh
Subject: Flink中对于state不是很大,但是需要频繁checkpoint的任务,backendstate是选file还是rockdb?

Flink中对于state不是很大,但是需要频繁checkpoint的任务,backendstate是选file还是rockdb呀,看官档说的是rockdb适合state很大的任务,可能吞吐会降低。但是如果选用file的话对hdfs的压力又很大