当前位置:  开发笔记 > 运维 > 正文

如何在Kafka中测试日志压缩是否有效?

如何解决《如何在Kafka中测试日志压缩是否有效?》经验,为你挑选了1个好方法。

我在Kafka 0.8.1.1中的server.properties文件中进行了更改,即在创建主题时添加log.cleaner.enable=true并启用cleanup.policy=compact了.现在,当我测试它时,我将以下消息推送到主题,其中包含以下内容(Key,Message).

偏移量:1 - (123,abc);

偏移量:2 - (234,def);

抵消:3 - (345,ghi);

抵消:4 - (123,已更改)

现在我用与早期输入相同的键推送第4条消息,但更改了消息.这里的日志压缩应该会出现.使用Kafka工具,我可以看到主题中的所有4个偏移.我怎么知道日志压缩是否有效?是否应删除先前的消息,或者在推送新消息时日志压缩工作正常.是否有做的任何事情log.retention.hourstopic.log.retention.hourslog.retention.size配置?这些配置在日志压缩中的作用是什么.PS - 我已经彻底浏览了Apache文档,但仍然不清楚.



1> 小智..:

即使这个问题已经有几个月了,我也只是在为自己的问题做研究.我创建了一个最小的例子来看看压缩如何与Java一起工作,也许它对你也有帮助:

https://gist.github.com/anonymous/f78184eaeec3ee82b15182aec24a432a

此外,在查阅文档时,我在主题级别使用了以下配置,以便尽快启动压缩:

min.cleanable.dirty.ratio=0.01
cleanup.policy=compact
segment.ms=100
delete.retention.ms=100

运行时,此类显示压缩有效 - 只有一条消息在主题上具有相同的键.

通过适当的设置,这可以在命令行上重现.


每100毫秒强制执行一次分段滚动对于测试来说是可以的,但生产效率极低。默认值为6048000000毫秒(7天)。
如果您最后一个`segment`(Topic-> Partition-> Segment)都没有填充,那么我将对此加以补充。假设segment.ms = 100,并且您在测试的前100毫秒内写入<`segement.bytes = 1GB`,那么您将只有1个数据段,并且数据将不会压缩。请确保您在比“ segment.ms”更长的时间内写入同一分区,或者将“ segment.bytes”设置为较低的值,以使并非所有数据都适合1个段。
推荐阅读
路人甲
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有