kafka删除topic数据
一、概述
生产环境中,有一个topic的数据量非常大。这些数据不是非常重要,需要定期清理。
要求:默认保持24小时,某些topic 需要保留2小时或者6小时

二、清除方式
主要有3个:
1. 基于时间
2. 基于日志大小
3. 基于日志起始偏移量
详情,请参考链接:
https://blog.csdn.net/u013256816/article/details/80418297
接下来,主要介绍基于时间的清除!
kafka版本为: 2.11-1.1.0
zk版本为: 3.4.13
三、kafka配置
# 启用删除主题
delete.topic.enable=true
# 检查日志段文件的间隔时间,以确定是否文件属性是否到达删除要求。
log.retention.check.interval.ms=
注意:这2行配置必须存在,否则清除策略失效!
log.retention.check.interval.ms 参数的单位是毫秒,这里表示间隔1秒钟
四、清除策略
全局topic
在 server.properties 文件中配置的是全局策略,针对每一个topic
比如:
log.retention.hours=
表示保留3个小时
单个topic
针对单个topic策略,需要使用脚本kafka-configs.sh
此脚本不需要重启kafka就会生效!
首先来查看一下,当前的topic策略,比如test
bin/kafka-configs.sh --zookeeper zookeeper-.default.svc.cluster.local: --describe --entity-type topics --entity-name test
参数解释:
--describe 详细信息
--entity-type 实体类型
--entity-name 指定topic名
输出:
Configs for topic 'test' are
这个表示为策略为空
删除topic数据
如果需要删除topic所有数据,使用命令
bin/kafka-topics.sh --delete --topic test --zookeeper zookeeper-.default.svc.cluster.local:
这个命令,请谨慎执行!!!
如果想保留主题,只删除主题现有数据(log)。可以通过修改数据保留时间实现
bin/kafka-configs.sh --zookeeper zookeeper-.default.svc.cluster.local: --entity-type topics --entity-name test --alter --add-config retention.ms=
执行输出:
Completed Updating config for entity: topic 'test'.
注意:修改保留时间为10秒钟,并不是10秒钟就马上删掉。kafka是采用轮询的方式,轮询到这个topic时,删除10秒钟前的数据。
时间由server.properties里面的log.retention.check.interval.ms选项为主
假设说 log.retention.check.interval.ms 值为1分钟,那么等待70秒,这个topic的数据就会自动被删除!
再次查看topic策略
bin/kafka-configs.sh --zookeeper zookeeper-.default.svc.cluster.local: --describe --entity-type topics --entity-name test
输出:
Configs for topic 'test' are retention.ms=
发现目前的删除策略为 retention.ms=10000
删除策略
如果需要删除上面的10秒策略,使用以下命令:
bin/kafka-configs.sh --zookeeper zookeeper-.default.svc.cluster.local: --entity-type topics --entity-name test --alter --delete-config retention.ms
输出:
Completed Updating config for entity: topic 'test'.
再次查看topic策略
bin/kafka-configs.sh --zookeeper zookeeper-.default.svc.cluster.local: --describe --entity-type topics --entity-name test
输出:
Configs for topic 'test' are
发现策略为空,说明删除成功了!
五、测试清除策略
测试思路

说明:
第一步,设置清除策略为保留10秒
第二步,进入生产者模式,输入消息 a
第三步,等待5秒,再次进入生产者模式,输入消息 b
第四部,进入消费者模式,看输出的消息是a还是b
判断标准:
在进行第三步时,a这条消息,应该已经被删除了。所以在第15秒进入消费者模式时,应该输出 b,这样的话,策略才是成功的!
设置策略
topic 为test的数据保留10秒
bin/kafka-configs.sh --zookeeper zookeeper-.default.svc.cluster.local: --entity-type topics --entity-name test --alter --add-config retention.ms=
生产模式
进入生产模式,输入a
bin/kafka-console-producer.sh --broker-list kafka-1.default.svc.cluster.local:9092 --topic test
> a
等待5秒后,再次进入生产模式,输入b
bin/kafka-console-producer.sh --broker-list kafka-1.default.svc.cluster.local:9092 --topic test
> b
消费者模式
等待5秒后,进入 消费者模式
bin/kafka-console-consumer.sh --bootstrap-server kafka-1.default.svc.cluster.local:9092 --topic test --from-beginning b
如果消费者输出为b,表示策略成功!
备注:
如果生产环境中,正在不断的进行生产和消费,执行kafka-configs.sh 脚本,是否会有影响呢?
答案是不会的,它是动态策略!
本文参考链接:
https://blog.csdn.net/forrest_ou/article/details/78999983
kafka删除topic数据的更多相关文章
- kafka 删除topic清空数据
原 kafka 删除topic清空数据 2018年11月20日 18:17:50 Ming! 阅读数:1391 版权声明:版权声明:本文为博主原创文章,未经博主允许不得转载. https://bl ...
- kafka删除topic及其相关数据
1.删除kafka存储目录(server.properties文件log.dirs配置,默认为"/tmp/kafka-logs")相关topic目录 2.Kafka 删除topic ...
- kafka删除topic的方法及我在kafka上边的一些经验
我在本地做kafka的producer调试,每隔一段时间后,所使用的topic管道就会堆积数据,而且我这边使用的是 kafka bin 下的consumer命令单独消费的,每次都是 --fro ...
- kafka 清除topic数据脚本
原 kafka 清除topic数据脚本 2018年07月25日 16:57:13 pete1223 阅读数:1028 #!/bin/sh param=$1 echo " ...
- kafka删除主题数据和删除主题
1.删除主题 在server.properties中增加设置,默认未开启 delete.topic.enable=true 删除主题命令 /bin/kafka-topics --delete --to ...
- kafka删除topic详解
1.删除topic命令 bin/kafka-topics.sh --delete --zookeeper 192.168.242.131:2181 --topic aaa 注:此命令如果要生效,还需在 ...
- kafka 删除topic
两种方法: 一.修改配置文件server.properties 添加如下配置: delete.topic.enable=true 说明:官方给的文档说明“Enables delete topic. D ...
- kafka删除topic中的数据,适用于比较高的版本
server.properties中增加选项 delete.topic.enable=true 修改之后重启kafka 进入kafka目录,输入命令 bin/kafka-topics.sh --zoo ...
- kafka删除topic
手动: 删除kafka存储目录(server.properties文件log.dirs配置,默认为"/tmp/kafka-logs")相关topic目录 删除zookeeper & ...
随机推荐
- xvfb-run: error: xauth command not found 解决方式
解决方式转于:http://tokanao.com/blog/2016/07/13/blog.html 错误提示 array(2) { [0]=> string(27) "which: ...
- JavaScript Array() 对象:push() 和 join() 方法
<script> var fruits = ["Banana", "Orange", "Apple", "Mango& ...
- mysql学习笔记-- 多表查询之外键、表连接、子查询、索引
本章主要内容: 一.外键 二.表连接 三.子查询 四.索引 一.外键: 1.什么是外键 2.外键语法 3.外键的条件 4.添加外键 5.删除外键 1.什么是外键: 主键:是唯一标识一条记录,不能有重复 ...
- 解决virtualbox与mac文件拖拽问题
apt-get purge virtualbox-guest-x11apt-get autoremove --purgerebootapt-get updateapt-get dist-upgrade ...
- 20155302 2016-2017-2 《Java程序设计》第九周学习总结
20155302 2016-2017-2 <Java程序设计>第九周学习总结 教材学习内容总结 基本数据库操作相关的JDBC接口或类是位于java.sql包中.在程序中要取得数据库联机,我 ...
- Tessaract 源码分析(转)
源码分析 Page Layout 分析步骤 二值化算法: OTSU调用栈:main[api/tesseractmain.cpp] -> TessBaseAPI::ProcessPages[api ...
- luogu P2662 牛场围栏
传送门 因为一个木板可以切掉最多\(m\),所以可以先预处理哪些长度的木板可用,开个桶,然后对\([l-m,l]\)打标记,再把打了标记的数取出来 假设可用长度\(a_1,a_2,,,a_n\)从小到 ...
- ACM-ICPC 2018 沈阳赛区网络预赛 K题
题目链接: https://nanti.jisuanke.com/t/31452 AC代码(看到不好推的定理就先打表!!!!): #include<bits/stdc++.h> using ...
- BackBone结合ASP.NET MVC实现页面路由操作
1. 问题的背景 什么是页面路由操作,就是通过浏览器地址栏的标记来实现页面内部的一些操作,这些操作具有异步性和持久性.应用场景主要有页面操作过程中的添加收藏夹的操作.后退操作等过程中能完全恢复界面. ...
- Linux驱动总结3- unlocked_ioctl和堵塞(waitqueue)读写函数的实现 【转】
转自:http://blog.chinaunix.net/uid-20937170-id-3033633.html 学习了驱动程序的设计,感觉在学习驱动的同时学习linux内核,也是很不错的过程哦,做 ...