ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Kafka中的日志数据清理策略

2022-02-01 17:35:20  阅读:148  来源: 互联网

标签:删除 log 阈值 500MB 清理 Kafka 日志 retention


  • Kafka将数据持久化到了硬盘上,为了控制磁盘容量,需要对过去的消息进行清理

  • Kafka日志删除策略

    • 内部有个定时任务检测删除日志,默认是5分钟 log.retention.check.interval.ms
    • 支持配置策略对数据清理
    • 根据segment单位进行定期清理
  • 启用cleaner

    • log.cleaner.enable=true
    • log.cleaner.threads = 2 (清理线程数配置)
  • 日志删除

    • log.cleanup.policy=delete
    #清理超过指定时间的消息,默认是168小时,7天,
    #还有log.retention.ms, log.retention.minutes, log.retention.hours,优先级高到低
    log.retention.hours=168
    
    #超过指定大小后,删除旧的消息,下面是1G的字节数,-1就是没限制
    log.retention.bytes=1073741824
    
    还有基于日志起始位移(log start offset),未来社区还有更多
    • 基于【时间删除】 日志说明
    配置了7天后删除,那7天如何确定呢?
    
    每个日志段文件都维护一个最大时间戳字段,每次日志段写入新的消息时,都会更新该字段
    
    一个日志段segment写满了被切分之后,就不再接收任何新的消息,最大时间戳字段的值也将保持不变
    
    kafka通过将当前时间与该最大时间戳字段进行比较,从而来判定是否过期
    • 基于【大小超过阈值】 删除日志 说明
      • log.retention.bytes和log.retention.minutes任意一个达到要求,都会执行删除
    假设日志段大小是500MB,当前分区共有4个日志段文件,大小分别是500MB,500MB,500MB和10MB
    
    10MB那个文件就是active日志段。
    
    此时该分区总的日志大小是3*500MB+10MB=1500MB+10MB
    
    如果阈值设置为1500MB,那么超出阈值的部分就是10MB,小于日志段大小500MB,故Kafka不会执行任何删除操作,即使总大小已经超过了阈值;
    
    如果阈值设置为1000MB,那么超过阈值的部分就是500MB+10MB > 500MB,此时Kafka会删除最老的那个日志段文件
    
    注意:超过阈值的部分必须要大于一个日志段的大小
  • 日志压缩

    • log.cleanup.policy=compact 启用压缩策略
    • 按照消息key进行整理,有相同key不同value值,只保留最后一个

标签:删除,log,阈值,500MB,清理,Kafka,日志,retention
来源: https://blog.csdn.net/java_huizhen/article/details/122765001

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有