Kafka日志清理
以下参数是配置在**./config/server.properties**下进行配置的参数。
在进行配置以下清理方式之前 需要进行的配置:
log.retention.check.interval.ms
The interval at which log segments are checked to see if they can be deleted according to the retention policies.
检查日志段的时间间隔,以确定它们是否可以根据保留策略被删除。
使用形式是:
log.retention.check.interval.ms=10000
单位是毫秒
log.segment.bytes
The maximum size of a log segment file. When this size is reached a new log segment will be created.
日志段文件的最大大小。当达到这个大小时,将创建一个新的日志段。
因为kafka是将一个一个的日志文件按照日志段进行存储的,所以在进行日志删除时,会将日志段时间进行比较,将超过时间的进行删除。
使用的形式是:
log.segment.bytes=100000
单位是B
换算是1KB=1024B 1MB=1024KB 1GB=1024MB,即1G=1024* 1024* 1024=1073741824
log.cleanup.policy
delete 清理策略,这种策略就是我们默认看到的数据保留特点,超过特定的数据量或者时间,日志就会被删除。
compact 清理策略要求每个record都要有key,kafka是根据key来进行去重合并的,那种需要留存一份全量数据的需求比较有用。举个例子,计算了所有用户的粉丝数,而且每5分钟更新一次,结果都存储到kafka当中。数据会无限膨胀,而且,很多数据是无意义的,所以只需要总数就可以了。
为了兼容kafka 0.9.0之前的版本需要添加。
log.cleaner.enable
Kafka Broker 的日志清理功能在配置 log.cleaner.enable=true
后会开启一些清理线程,执行定时清理任务。
使用形式是:
log.cleaner.enable=true
按时间方式进行清理
以下三种配置可以指定如果Kafka中的消息超过指定的阈值,就会将日志进行自动清理:
log.retention.hours
使用形式是:
log.retention.hours =24
单位是小时。
log.retention.minutes
使用形式是:
log.retention.minutes =60
单位是分钟。
log.retention.ms
使用形式是:
log.retention.ms = 1000
单位是毫秒。
其中,优先级为log.retention.ms > log.retention.minutes > log.retention.hours。默认情况,在broker中,配置如下:log.retention.hours=168,也就是,默认日志的保留时间为 168 小时,相当于保留 7 天。
按日志大小方式进行清理
log.retention.bytes
日志删除任务会检查当前日志的大小是否超过设定的阈值来寻找可删除的日志分段的文件集合。可以通过 broker 端参数log.retention.bytes来配置,默认值为 -1,表示无穷大。如果超过该大小,会自动将超出部分删除。
注意:log.retention.bytes配置的是日志文件的总大小,而不是单个的日志分段的大小,一个日志文件包含多个日志分段。
使用形式是:
log.retention.bytes = 1000
单位是B。