kafka自动清理日志

Kafka日志的清除

Kafka将消息存储在磁盘里,随着程序的运行,Kafka会产生大量的消息日志,进而占据大部分磁盘空间,当磁盘空间满时还会导致Kafka自动宕机,因此Kafka的日志删除是非常有必要的。

1. Kafka的日志清除策略

Kafka中每一个分区partition都对应一个日志文件,而日志文件又可以分为多个日志分段文件,这样也便于日志的清理操作。
Kafka提供了两种日志清除策略:
(1)日志删除(Log Deletion)按照一定的保留策略来直接删除不符合条件的日志分段。
(2)日志压缩(Log Compaction)针对每个消息的key进行整合,对于有相同key的不同value值,只保留最后一个版本。

我们可以通过broker端的参数log.cleanup.policy来设置日志的清除策略,此参数的默认值是“delete”,即采用日志删除的清除的策略。如果要采用日志压缩的清除策略,则需要将log.cleanup.policy设置为“compact”,并且还需要将log.cleaner.enable(默认值为true)设定为true。

通过将log.cleanup.policy设置为“delete,compact”,可以同时支持日志删除和日志压缩两种清除策略。

2. 日志删除策略

我主要采用的是日志删除的清除策略。Kafka日志管理器允许定制删除策略。目前的策略主要有两种:
(1)按时间删除。删除修改时间在N天之前的日志。
(2)按大小删除。保留最后的NGB的数据,即当日志数据超过指定的大小时,执行删除操作。
Kafka消费日志删除思想:
• Kafka把topic中一个parition大文件分成多个小文件段,通过多个小文件段,就容易定期清除或删除已经消费完文件,减少磁盘占用。
具体的操作过程如下:
修改配置文件server.properties
(1) 修改时间

log.retention.hours=1

(2) 修改大小

log.retention.bytes=1048576

(3) 设置

log.segment.bytes=10240

(4) 添加设置

log.cleanup.policy=delete

在这里插入图片描述

按照这个配置文件,只保存一小时的日志和大小不超过1M,当有一个条件满足,就触发删除日志操作。log.segment.bytes=10240表示每个文件的大小不超过10K。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值