Kafka Streams删除消耗的分区记录,以减少磁盘使用量

时间:2019-03-15 12:20:53

标签: apache-kafka apache-kafka-streams diskspace

我们有一个约有5000万条记录的kafka实例,每天约有10万次输入,因此在kafka世界中没有什么疯狂的。当我们想使用我们更复杂的流应用程序之一(具有许多不同的聚合步骤)来重新处理这些记录时,磁盘使用率从重新分区主题中变得非常疯狂。根据我们的了解,这些主题在kafka-streams 1.0.1和2.1.1中的Long.Max中使用标准保留时间(14天?)。这非常不方便,因为对于分区主题,在我们的例子中,每条记录在聚合完成后只能读取一次,之后可以删除。

所以我们的问题是,是否有任何方法可以在kafka流中配置一个设置,以便在处理记录后清除记录?我已经看到可以使用purgeDataBefore()(https://issues.apache.org/jira/browse/KAFKA-4586)来实现此目的。

作为参考,部分应用中有一些尺寸:

表1 (更改日志,紧凑〜2GB)->更改密钥和聚合(分区〜14GB)-> 表2 (更改日志,删除, 14KB)->更改密钥和聚合(分区21GB)-> 表3 (更改日志,精巧版,0.5GB)

(这是我的第一个堆栈溢出问题,因此,感谢您提供任何反馈,谢谢!)

1 个答案:

答案 0 :(得分:0)

purgeDataBefore()发布以来,Kafka Streams使用1.1 API:https://issues.apache.org/jira/browse/KAFKA-6150

您不需要启用它(也不能禁用它)。