【kafka】---kafka的日志清理机制

kafka的消费者们只消费消息,消费后并不是立即清除,那么kafka是怎样进行日志清理?

kafka的日志清理机制一般分为两种:日志清除和日志压缩。这两种机制是需要config/server.properties文件配置后才会选中,二选一。常见使用的是日志清除,至于日志压缩 适合特别场景。

一、日志清除机制

config/server.properties文件配置如下

# 日志片段文件的检查周期,查看它们是否达到了删除策略的设置(log.retention.hours或log.retention.bytes)
log.retention.check.interval.ms=60000
# 日志清理策略(delete|compact)
log.cleanup.policy = delete
# 日志保存时间 (hours|minutes),默认为7天(168小时)。超过这个时间会根据policy处理数据。bytes和minutes无论哪个先达到都会触发。
log.retention.hours=168
# 日志数据存储的最大字节数。超过这个bytes会根据policy处理数据。
#log.retention.bytes=1073741824	
#文件在索引中清除后保留的时间一般不需要去修改【被标记.deleted的文件会在这个延迟时间后清除】
log.delete.delay.ms =60000

第一个配置是kafka日志管理器中有专门的任务负责周期性地检测、删除不符合条件的日志分段文件,该周期可通过参数log.rentention.check.interval.ms来配置。
第二个配置是log.cleanup.policy=delete。表明选中日志清除机制。日志清除机制又分为三种:基于时间的删除策略基于日志大小的删除策略基于日志起始偏移量的删除策略

1、基于时间的删除策略

# 日志保存时间 (hours|minutes),默认为7天(168小时)。超过这个时间会根据policy处理数据。bytes和minutes无论哪个先达到都会触发。
log.retention.hours=168
#文件在索引中清除后保留的时间一般不需要去修改【被标记.deleted的文件会在这个延迟时间后清除】
log.delete.delay.ms =60000

一般是加上上面的两个配置。
定期检查日志文件是否有超过log.retention.hours时间【根据日志分段的最大时间戳largestTimeSta mp计算,查询该segment分段所对应的时间戳索引文件.timeindex中最后一条索引项】的日志segment分段。
执行日志分段的删除任务时,会首先从Log对象中维护的日志分段的跳跃表中移除需要删除的日志分段,然后将日志分段所对应的数据文件和索引文件添加.deleted后缀。最后转交给名称为delete-file任务来删除以.deleted为后缀的文件,执行延迟时间可通过参数log.delete.delay.ms控制,默认为1分钟。

2、基于日志大小的删除策略

# 日志数据存储的最大字节数。超过这个bytes会根据policy处理数据。
#log.retention.bytes=1073741824	
#文件在索引中清除后保留的时间一般不需要去修改【被标记.deleted的文件会在这个延迟时间后清除】
log.delete.delay.ms =60000

配置文件中不能少上面的配置信息。
该策略会依次检查每个日志中的日志分段是否超出指定的大小(log.retention.bytes),对超出指定大小的日志分段采取删除策略。

3、注意说明

如果log.retention.bytes和log.retention.hours同时配置,一般任意一个满足条件的话,都会删除的。
一个partiton分区会有很多分区segment段文件。
log.retention.hours比较好理解。确定这个分区上的segment文件们的时间,超过时间的删除。
log.retention.bytes是表示的这个分区总的超过阈值【总大小- log.retention.bytes值=超过阈值】大于一个segment段的大小时,才会触发删除。
例如:假设日志段大小是500MB,当前分区共有3个日志段文件,大小分别是500MB,500MB,130MB【130M那个文件是最新正在使用的segment文件】。此时该分区总日志大小是2*500MB+130MB=1130M,如果log.retention.bytes阈值设置为1000MB,那么超出阈值的部分就是130M < 500M,故Kafka不会执行任何删除操作;如果log.retention.bytes阈值设置为600MB,超过阈值是530M,此时Kafka会删除最老的那个日志段文件,到时会剩下500M,130M的两个segment文件。

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

DreamBoy_W.W.Y

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值