前言
kafka 默认存放7天的临时数据,如果遇到磁盘空间小,存放数据量大,可以设置缩短这个时间。
全局设置
修改:server.properties
log.retention.hours=72 log.cleanup.policy=delete
某个Topic设置
例如:将topic为logstash-log的日志数据设置为1天,单位为毫秒。
修改命令:
./kafka-configs.sh --zookeeper localhost:2181 --alter --entity-name logstash-log --entity-type topics --add-config retention.ms=86400000
查看是否生效:
./kafka-config --zookeeper localhsot:2181 --describle --entity-name logstash-log --entity_type topics
立刻删除
./kafka-topics.sh --zookeeper localhost:2181 --alter --topic logstash-log --config cleanup.policy=delete
查看是否生效:
./kafka-topics.sh --zookeeper localhost:2181 --topic logstash-log --describe
日志策略
分段策略属性
属性名 | 含义 | 默认值 |
log.roll.{hours,ms} | 日志滚动的周期时间,到达指定周期时间时,强制生成一个新的segment | 168(7day) |
log.segment.bytes | 每个segment的最大容量。到达指定容量时,将强制生成一个新的segment | 1G(-1为不限制) |
log.retention.check.interval.ms | 日志片段文件检查的周期时间 | 60000(1分钟) |
日志刷新策略
Kafka的日志实际上是开始是在缓存中的,然后根据策略定期一批一批写入到日志文件中去,以提高吞吐率。
属性名 | 含义 | 默认值 |
log.flush.interval.messages | 消息达到多少条时将数据写入到日志文件 | 10000 |
log.flush.interval.ms | 当达到该时间时,强制执行一次flush | 1000 |
log.flush.scheduler.interval.ms | 周期性检查,是否需要将信息flush | 很大的值 |
日志保存清理策略
属性名 | 含义 | 默认值 |
log.cleanup.policy | 日志清理保存的策略只有delete和compact两种 | delete |
log.retention.hours | 日志保存的时间,可以选择hours,minutes和ms |
168(7day) |
log.retention.bytes | 删除前日志文件允许保存的最大值 | -1 |
log.segment.delete.delay.ms | 日志文件被真正删除前的保留时间 |
60000 |
log.cleanup.interval.mins | 每隔一段时间多久调用一次清理的步骤 | 10 |
log.retention.check.interval.ms | 周期性检查是否有日志符合删除的条件(新版本使用) |
300000 |
日志删除,只是无法被索引到了而已。文件本身仍然是存在的,只有当过了log.segment.delete.delay.ms 这个时间以后,文件才会被真正的从文件系统中删除。
引用: