Kafka 0.10, 清空数据

1 问题

如何清空kafka数据?

文中配置项的含义, 请参考: Kafka 0.10, 配置项清单_Lion…的博客-优快云博客

2 对策

2.1 方案一(饥饿法)

默认情况下, kafka旧数据保留期限为一周
所以, 如果一周内不向topic写入数据, 数据会全部清空

缺点:

  • 一周太久, 等不起

2.2 方案二(重生法)

设置delete.topic.enable=true
手动删除topic, 然后重建

缺点:

  • 需要修改kafka集群配置, 并重启

2.3 方案三(最优法)

设置topic参数retention.ms, 减少存活时间, 待数据清除后删除参数
相较于前二种方案, 方案三不用重启, 且参数只针对具体topic, 不影响其他topic, 可行

3 执行

针对方案三, 指导性步骤如下

3.1 准备阶段

topic为unitopic, 其中一个分区大小为196 (见日志文件: 00000000000000000242.log)

[root@bd83 kafka]# ll -h /kafka-logs/unitopic-1/ 
总用量 21M
-rw-r--r-- 1 kafka hadoop 10M 2月   9 17:45 00000000000000000242.index
-rw-r--r-- 1 kafka hadoop 196 2月  24 16:15 00000000000000000242.log
-rw-r--r-- 1 kafka hadoop 10M 2月   9 17:45 00000000000000000242.timeindex

3.2 修改retention.ms

[root@bd83 kafka]# bin/kafka-configs.sh --zookeeper bd83 --alter --entity-type topics --entity-name unitopic --add-config retention.ms=1000
Updated config for entity: topic 'unitopic'.

[root@bd83 kafka]# bin/kafka-configs.sh --zookeeper bd83  --entity-type topics --entity-name unitopic --describe
Configs for topic 'unitopic' are retention.ms=1000

3.3 等待后台清理

retention.ms配置为1000, 表示topic的日志只保留1秒
因为kafka日志清理扫描周期默认为300s, 所以至多需要等待5分钟来观察最终结果

清理时, 会打上delete标记

[root@bd83 kafka]# ll -h /kafka-logs/unitopic-1
总用量 21M
-rw-r--r-- 1 kafka hadoop   0 2月  24 16:30 00000000000000000242.index.deleted
-rw-r--r-- 1 kafka hadoop 196 2月  24 16:15 00000000000000000242.log.deleted
-rw-r--r-- 1 kafka hadoop  12 2月  24 16:30 00000000000000000242.timeindex.deleted
-rw-r--r-- 1 kafka hadoop 10M 2月  24 16:30 00000000000000000244.index
-rw-r--r-- 1 kafka hadoop   0 2月  24 16:30 00000000000000000244.log
-rw-r--r-- 1 kafka hadoop 10M 2月  24 16:30 00000000000000000244.timeindex

清理完成后

[root@bd83 kafka]# ll -h /kafka-logs/unitopic-1
总用量 20M
-rw-r--r-- 1 kafka hadoop 10M 2月  24 16:30 00000000000000000244.index
-rw-r--r-- 1 kafka hadoop   0 2月  24 16:30 00000000000000000244.log
-rw-r--r-- 1 kafka hadoop 10M 2月  24 16:30 00000000000000000244.timeindex
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值