Kafka将数据持久化到了硬盘上,允许你配置一定的策略对数据清理,清理的策略有两个,删除和压缩。

数据清理的方式

删除

log.cleanup.policy=delete启用删除策略
直接删除,删除后的消息不可恢复。可配置以下两个策略:
清理超过指定时间清理:
log.retention.hours=16
超过指定大小后,删除旧的消息:
log.retention.bytes=1073741824

解释:log.retention.bytes为topic每个分区的最大文件大小,一个topic的大小限制 =分区数*log.retention.bytes。-1没有大小限制,log.retention.bytes和log.retention.minutes任意一个达到要求,都会执行删除,会被topic创建时的指定参数覆盖

为了避免在删除时阻塞读操作,采用了copy-on-write形式的实现,删除操作进行时,读取操作的二分查找功能实际是在一个静态的快照副本上进行的,这类似于Java的CopyOnWriteArrayList。

压缩

将数据压缩,只保留每个key最后一个版本的数据。
首先在broker的配置中设置log.cleaner.enable=true启用cleaner,这个默认是关闭的。
在topic的配置中设置log.cleanup.policy=compact启用压缩策略。

压缩策略的细节


如上图,在整个数据流中,每个Key都有可能出现多次,压缩时将根据Key将消息聚合,只保留最后一次出现时的数据。这样,无论什么时候消费消息,都能拿到每个Key的最新版本的数据。
压缩后的offset可能是不连续的,比如上图中没有5和7,因为这些offset的消息被merge了,当从这些offset消费消息时,将会拿到比这个offset大的offset对应的消息,比如,当试图获取offset为5的消息时,实际上会拿到offset为6的消息,并从这个位置开始消费。
这种策略只适合特俗场景,比如消息的key是用户ID,消息体是用户的资料,通过这种压缩策略,整个消息集里就保存了所有用户最新的资料。
压缩策略支持删除,当某个Key的最新版本的消息没有内容时,这个Key将被删除,这也符合以上逻辑。

转自:http://blog.csdn.net/honglei915/article/details/49683065

Kafka数据清理配置相关推荐

  1. kafka数据清理配置——删除篇

    前言 本意利用kafka实现一个类似redis发布订阅的模式,比redis多了一个数据分区的功能.kafka里面的数据我们是不需要存储的,因此我们需要配置对应的删除策略 Kafka版本号 2.8.1 ...

  2. Docker Kafka 数据清理

    一.删除没用的topic # 进入kafka docker exec -it ${containerId} /bin/bash # 进入kafka/bin cd opt/kafka_xxx/bin # ...

  3. Sentry 企业级数据安全解决方案 - Relay PII 和数据清理

    本文档描述了一种我们希望最终对用户隐藏的配置格式.该页面仍然存在的唯一原因是当前 Relay 接受这种格式以替代常规数据清理设置. 以下文档探讨了 Relay 使用和执行的高级数据清理配置的语法和语义 ...

  4. Kafka中数据清理(Log Deletion)

    目录 5. Kafka中数据清理(Log Deletion) 5.1 日志删除 5.1.1 定时日志删除任务 5.1.2 基于时间的保留策略 5.1.3 基于日志大小的保留策略 5.1.4 基于日志起 ...

  5. kafka数据不丢失不重复_如何配置 KAFKA 使其消息不会丢失

    不可靠的KAFKA 这里的不可靠是指代KAFKA其设计之初就为高性能而设计,其是允许消息丢失的,但经过多个版本的升级之后,通过KAFKA的相关配置,我们可以将其作为可靠的队列(不丢消息的队列). 在本 ...

  6. 小木大数据-kafka安装及配置

    kafka安装及配置 大家好,今天我要给大家介绍一下kafka的安装及配置的方式. 首先介绍一下什么叫kafka.Kafka是一个发布订阅消息系统,它的用途小木我理解的是,我们有一个温度传感器,然后k ...

  7. 【Kafka】Kafka数据可靠性深度解读

    2019独角兽企业重金招聘Python工程师标准>>> Kafka起初是由LinkedIn公司开发的一个分布式的消息系统,后成为Apache的一部分,它使用Scala编写,以可水平扩 ...

  8. kafka数据可靠性深度解读

    本文收录于InfoQ,未经允许不得转载. 欢迎支持笔者新作:<深入理解Kafka:核心设计与实践原理>和<RabbitMQ实战指南>,同时欢迎关注笔者的微信公众号:朱小厮的博客 ...

  9. Kafka日志清理之Log Compaction

    欢迎支持笔者新作:<深入理解Kafka:核心设计与实践原理>和<RabbitMQ实战指南>,同时欢迎关注笔者的微信公众号:朱小厮的博客. 欢迎跳转到本文的原文链接:https: ...

最新文章

  1. 学习用Pandas处理分类数据!
  2. 使用 qrcodejs 生成二维码的几个问题
  3. 大型网站架构演变和知识体系--转
  4. 61种常用JavaScript
  5. 后台设置 datakeynames
  6. [Wf2011]Chips Challenge(最小费用最大流)
  7. C++:extern关键字
  8. 4月升级鸿蒙,华为鸿蒙系统4月升级适配名单一览
  9. 2021-06-26 严格检查模式 字符串
  10. 关于DM8168中移植算法速度慢、效率低的新发现
  11. js微信抢红包脚本代码_微信抢红包插件示例代码及其实现原理
  12. 【Windows】bat | 服务 | bat作为服务 | bat转exe
  13. android 分辨率 720 1184 适配,墨迹天气 Android版最新!趋势界面可以横向滑动切换城市!...
  14. IERS EOP 文件的解读
  15. 在微信中怎么打开微信运动?福利干货!如何在微信中开启微信运动记录每天运动步数?
  16. Mobaxterm X server远程Linux服务器使用浏览器(firefox或google chrome)
  17. redisson 主从模式Unsupported protocol version 50_强推七本欢喜冤家甜文,男女主从互怼到互宠,超甜超撩超过瘾!...
  18. blinker 第三方库_blinker 库开发注意事项
  19. 关于五笔输入法与EXCEL不兼容解决方法
  20. 创意自画像及简单交互

热门文章

  1. 计算机毕业设计(6)python毕设作品之学校校园网站系统
  2. java 偶校验_串口起始位、数据位、奇偶校验位、停止位、波特率与时间等问题的解读...
  3. linux编译freebsd,freebsd下作x86/arm linux的交叉编译器
  4. 数据结构基础知识点,看完保证期末不挂科!
  5. Shell自动化管理账号脚本
  6. 【】宝塔搭建网站教程,新增一个网站
  7. java 递归函数_java 递归函数
  8. python之元编程
  9. 中文编程专栏月报:2017年12月
  10. 小心!疯狂科技“秒变”疯狂骗局