- 日志数据清理:为了控制磁盘的容量,需要对过去的消息进行清理
- 默认是5分钟
-
支持配置策略对数据进行清理,以segment为基本单位进行定期清理,当前正在使用的segment不会被清理。
-
启用cleaner相关参数
- log.cleaner.enable = ture
- log.cleaner.threads = 2 (多线程清理,提高数据清理速度)
- 删除参数开启:log.cleanup.policy = delete
(1)时间删除策略
-
时间删除参数:log.retention.hours = 168 #清理超过指定时间的消息的消息,默认7天
-
删除原理:
①每个日志段文件都会维护一个最大时间戳,每次日志段有新消息写入时,都会更新该字段;
②一个日志段写满被切分后,不再接受任何消息,最大时间戳字段的值也不会发生变化;
③kafka通过当前时间与该最大时间戳字段进行比较,从而判定是否过期。
(2)文件大小阈值删除策略
-
文件大小阈值参数:log.retention.bytes = 1073741824 #超过指定大小后,删除旧消息,默认是1G
-
删除原理
①当前日志段大小为1G、删除文件阈值大小为2G;
②三个日志段1G、1G、500M不会触发删除,因为超出阈值部分为500M,小于日志段大小1G,所以不会触发删除;
③四个日志段1G、1G、1G、1M会出发删除,因为超出阈值部分为1G+1M,大于日志段1G,所以会触发删除;
④超过阈值的部分必须要一定大于一个日志段的大小
(3)策略生效时机
- log.retention.hours或log.retention.bytes任意一个达到要求,都会执行删除。
- 日志压缩:只能针对特定的topic应用此策略,即写入的message都带有Key, 合并相同Key的message, 只留下最新的message;
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)