gpt4 book ai didi

hdfs - Flink RocksDB 性能问题

转载 作者:行者123 更新时间:2023-12-01 06:02:51 25 4
gpt4 key购买 nike

我有一个 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 - Flink RocksDB 性能问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53250108/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com