1

我已通过以下命令设置了retention.ms=3600000,但1小时后磁盘上仍有大量数据。由于大量数据传入 Kafka,我的磁盘已满。

./bin/kafka-topics.sh --zookeeper zookeeper:2181 --alter --topic topic_1 --config retention.ms=3600000

描述命令

 ./bin/kafka-topics.sh --zookeeper zookeeper:2181 --describe --topics-with-overrides
    Topic:__consumer_offsets        PartitionCount:50       ReplicationFactor:3     Configs:segment.bytes=104857600,cleanup.policy=compact,compression.type=producer
    Topic:topic_1    PartitionCount:3        ReplicationFactor:3     Configs:retention.ms=3600000
    Topic:topic_2    PartitionCount:3        ReplicationFactor:3     Configs:retention.ms=3600000
    Topic:topic_3    PartitionCount:3        ReplicationFactor:3     Configs:retention.ms=3600000,retention.bytes=104857600

谁能给出建议,为什么kafka在1小时后不删除数据。?

4

3 回答 3

3

从 describe 命令结果来看,主题保留策略设置为compact启用日志压缩而不是删除,并将保留每个键的最新数据。要删除所有超过保留期的数据,您需要将保留策略设置为delete

./bin/kafka-topics.sh --zookeeper zookeeper:2181 --alter --topic topic_1 --config cleanup.policy=delete
于 2018-11-15T18:27:51.970 回答
1

检查 的值log.retention.check.interval.ms
此值会影响日志清理器。它将检查是否有任何日志符合此时间间隔的删除条件。

于 2018-11-15T17:43:58.553 回答
1

正如文档所暗示的,如果我们使用“删除”保留策略,retention.ms 控制 kafka 在丢弃旧日志段以释放空间之前保留日志的最长时间。看起来你cleanup.policy的设置为紧凑而不是delete

bin/kafka-configs.sh --zookeeper 2181 --entity-type topics 
--entity-name topic_1  --alter --add-config cleanup.policy=delete

PS:从 kafka-topics.sh 脚本(kafka.admin.TopicCommand)更改主题配置已被弃用。今后,请使用 kafka-configs.sh 脚本 (kafka.admin.ConfigCommand) 来实现此功能。

于 2018-11-16T08:12:50.377 回答