我有一个flink作业(使用scala),基本上是从kafka-topic(1.0)中读取数据,聚合数据(使用1分钟事件时间滚动窗口和fold函数,我知道这个函数已经过时,但比聚合函数更容易实现),并将结果写入2个不同的kafka主题。
问题是-当我使用FS状态后端时,一切都运行顺利,检查点只需要1-2秒,平均状态大小为200MB-也就是说,直到状态大小增加(例如在关闭间隙时)。
我想我会尝试使用rocksdb(在hdfs上)进行检查点-但吞吐量显着低于fs状态后端。据我所知,当使用fs状态后端时,flink不需要对每个状态访问进行序列化/反序列化,因为状态保留在内存(堆)中,而rocks db需要,我猜这就是导致减速(和背压以及检查点花费更长时间,有时超时10分钟)的原因。
尽管如此,有时状态无法放入内存,我正在努力弄清楚如何使rocksdb状态后端表现“更好”。
这是因为fold函数已经过时吗?我需要微调一些文档中不容易搜索到的参数吗?任何提示?
问题是-当我使用FS状态后端时,一切都运行顺利,检查点只需要1-2秒,平均状态大小为200MB-也就是说,直到状态大小增加(例如在关闭间隙时)。
我想我会尝试使用rocksdb(在hdfs上)进行检查点-但吞吐量显着低于fs状态后端。据我所知,当使用fs状态后端时,flink不需要对每个状态访问进行序列化/反序列化,因为状态保留在内存(堆)中,而rocks db需要,我猜这就是导致减速(和背压以及检查点花费更长时间,有时超时10分钟)的原因。
尽管如此,有时状态无法放入内存,我正在努力弄清楚如何使rocksdb状态后端表现“更好”。
这是因为fold函数已经过时吗?我需要微调一些文档中不容易搜索到的参数吗?任何提示?
namenode:port///checkpoints
URI实例化rocksdb状态后端。如果检查点和工作状态之间有区别,我该如何定义它? 我正在使用增量检查点技术,我可以尝试提供更多内存,请问如何操作? - OmriManor