栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

【HBZ分享】Kafka中日志清理策略

【HBZ分享】Kafka中日志清理策略

Kafka检测是否存在删除日志

Kafka集群搭建 并 整合springboot.
Kafka日志存储流程和LOG日志解析 + LEO + HW 讲解【点击这里】.
Consumer消费者机制 与 分区策略讲解【点击这里】.
Kafka数据文件存储-可靠性保证ACK-ISR核心【点击这里】.
Kafka高性能之零拷贝原理.

Kafka如何检测要删除的日志
(1). kafka内部会定时检测是否有日志要删除,默认是5分钟,即log.retention,check.interval.ms
(2). 支持配置策略对数据清理
(3). 根据segment单位进行定期清理,注意每次都会删除完整的segment,不会删除某个.log的一部分 启动Kafka删除策略 及 原理

启动cleaner
(1). log.cleaner.enable = true
(2). log.cleaner.threads = 2(清理线程数配置)

日志删除
(1). log.cleanup.polic = delete

# 清理超过指定时间的消息,默认168小时,7天
# 还有 log.retention.ms, log.retention.minutes, log.retention.hours, 优先级高到低
log.retention.hours=168

# 超过指定大小后,删除就得消息,下面是1G的字节数,-1表示不限制
log.retention.bytes=1073741824

分别解析【基于时间】与【基于大小阈值】两种删除策略
(1). 基于【时间删除】日志说明:
设定删除7天前的数据:每个segment都会维护一个【最新更新时间】的时间戳,即每次向segment写入数据都会记录写入时的时间戳,当一个segment被写满时,会创建一个新的segment继续写。那么被写满的segment就不会再被写入,那么最大时间戳这个字段就不会更新,kafka每5分钟会检查一次是否存在要删除的segment,当这个写满的segment最大时间戳 和 当前时间戳差值达到7天,则该segment会被整个删除掉

(2). 基于【大小阈值删除】日志说明
设定partition只保留1500M的日志,每个segment最多存500M: 当日志量达到1510M时,即有4个segment,分别是500M, 500M ,500M,10M。 此时1510M > 1500M, 按理说应该从最旧的segment删除10M,但上面提及过,Kafka每次只会删除完整的segment,而一个segment是500M,所以当日志总量1510M时kafka并不会删除日志。当总日志量到达2010M时,2010-1500 = 510M, 即 要删除510M的数据,所以kafka会把最旧的segment给删除掉,由于第二旧segment也是500M > 10M,所以不会被删除,结果就是真实删除日志大小就500M,那10M不会被删除

如果【基于时间】和【基于阈值】同时存在, 只要二者有一个满足,就会触发日志清理机制

日志压缩法
该方法也是清理日志节省空间的一个方法。即 只会保留最新数据。意思就是当日志中存在3个相同key的消息,Kafka只会保留最新的那个key,剩余两个会被删除掉,以此来节省空间。一般不用,正常只会用【基于时间】或者【基于阈值大小】来进行删除

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/701859.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号