"我有一个flink工作(scala)基本上是从kafka-topic(1.0)读取,聚合数据(1分钟事件时间翻滚窗口,使用折叠函数,我知道这是弃用的,但比聚合更容易实现功能),并将结果写入2个不同的kafka主题。
问题是 - 当我使用FS状态后端时,一切运行顺利,检查点需要1-2秒,平均状态大小为200 mb - 也就是说,直到状态大小增加(同时缩小差距,例如)。
我想我会尝试使用rocksdb(over hdfs)作为检查点 - 但吞吐量明显低于fs状态后端。据我所知,当使用fs状态后端时,flink不需要为每个状态访问进行ser / deserialize,因为状态保存在内存(堆)中,岩石db DOES,我猜这是导致减速的原因(和背压,检查点需要更长时间,有时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。"
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。