hdfs之Flink RocksDB 性能问题

mayingbao 阅读:95 2024-02-23 17:27:14 评论:0

我有一个 flink 作业 (scala),它基本上是从 kafka-topic (1.0) 读取数据,聚合数据(1 分钟事件时间滚动窗口,使用 fold 函数,我知道这是已弃用,但比聚合函数更容易实现),并将结果写入 2 个不同的 kafka 主题。

问题是 - 当我使用 FS 状态后端时,一切运行顺利,检查点需要 1-2 秒,平均状态大小为 200 mb - 也就是说,直到状态大小增加(关闭时)例如,一个间隙)。

我想我会尝试使用 rocksdb(通过 hdfs)作为检查点 - 但吞吐量明显低于 fs 状态后端。据我了解,当使用 fs 状态后端时,flink 不需要为每个状态访问进行序列化/反序列化,因为状态保存在内存(堆)中,岩石 db 确实如此,我想这就是速度下降的原因(和背压,检查点需要更长的时间,有时会在 10 分钟后超时)。

不过,有时状态无法放入内存中,我正在尝试弄清楚如何让 rocksdb 状态后端执行“更好”。

是因为弃用的折叠功能吗?我是否需要微调一些在文档中不容易搜索到的参数?有什么建议吗?

请您参考如下方法:

每个状态后端都在某处保存工作状态,然后将其检查点持久保存在分布式文件系统中。 RocksDB 状态后端将其工作状态保存在磁盘上,这可以是本地磁盘,希望比 hdfs 更快。

尝试将 state.backend.rocksdb.localdir(参见 https://ci.apache.org/projects/flink/flink-docs-release-1.6/ops/state/state_backends.html#rocksdb-state-backend-config-options)设置为每个任务管理器上最快的本地文件系统上的某个位置。

启用增量检查点也可能产生很大的不同。

另见 Tuning RocksDB .


标签:HDFS
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

关注我们

一个IT知识分享的公众号