kafka删除topic数据[通俗易懂]

kafka删除topic数据[通俗易懂]kafka删除topic数据一、概述生产环境中,有一个topic的数据量非常大。这些数据不是非常重要,需要定期清理。要求:默认保持24小时,某些topic需要保留2小时或者6小时二、清除方式主要有3个:1.基于时间2.基于日志大小3.基于日志起始偏移量详情,请参考链接:https://blog.csdn.net/u013256816/article/details/80418297接下来,主要介绍基于时间的清除!kafka版本为:2.11-..

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

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=1000
 

注意:这2行配置必须存在,否则清除策略失效!

log.retention.check.interval.ms 参数的单位是微秒,这里表示间隔1秒钟

四、清除策略
全局topic
在 server.properties 文件中配置的是全局策略,针对每一个topic

单个topic
针对单个topic策略,需要使用脚本kafka-configs.sh

此脚本不需要重启kafka就会生效!

首先来查看一下,当前的topic策略,比如test

bin/kafka-configs.sh –zookeeper zookeeper-1.default.svc.cluster.local:2181 –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-1.default.svc.cluster.local:2181
 

这个命令,请谨慎执行!!!

如果想保留主题,只删除主题现有数据(log)。可以通过修改数据保留时间实现

bin/kafka-configs.sh –zookeeper zookeeper-1.default.svc.cluster.local:2181 –entity-type topics –entity-name test –alter –add-config retention.ms=10000
 

执行输出:

Completed Updating config for entity: topic ‘test’.
 

注意:修改保留时间为10秒,但不是修改后10秒就马上删掉,kafka是采用轮训的方式,轮训到这个topic发现10秒前的数据都是删掉。时间由server.properties里面的log.retention.check.interval.ms选项为主

再次查看topic策略

bin/kafka-configs.sh –zookeeper zookeeper-1.default.svc.cluster.local:2181 –describe –entity-type topics –entity-name test
 

输出:

Configs for topic ‘test’ are retention.ms=10000
 

发现目前的删除策略为 retention.ms=10000

删除策略
如果需要删除上面的10秒策略,使用以下命令:

bin/kafka-configs.sh –zookeeper zookeeper-1.default.svc.cluster.local:2181 –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-1.default.svc.cluster.local:2181 –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-1.default.svc.cluster.local:2181 –entity-type topics –entity-name test –alter –add-config retention.ms=10000
 

生产模式
进入生产模式,输入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
 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/181053.html原文链接:https://javaforall.net

(0)
上一篇 2022年10月17日 上午11:36
下一篇 2022年10月17日 上午11:46


相关推荐

  • Centos7安装svn服务

    Centos7安装svn服务Centos7安装svn2020-12-0509:53:032020-11-1816:54:08+0800chenxizhannew在Centos上安装SVN服务器的步骤简单介绍每个安装步骤的原理CentOSLinuxrelease7.9svn,version1.7.14安装1.7.14-14.el7#1.安装服务sudoyuminstallsubversion#2.创建存放仓库的目录sudomkdir-p/var/svn#

    2022年10月18日
    4
  • python把局部变量赋值给全局变量_局部变量不赋初值

    python把局部变量赋值给全局变量_局部变量不赋初值理解的都没问题。但我想聊聊出现这种情况的原因。在讲原因之前,需要先知道python中变量的搜索顺序,这个顺序是LGB(不考虑闭包情况)即local本地,global全局,builtin内建。比如:a=1deftest():a=3print(a)test()函数内声明了局部变量a,在打印中使用,在本地环境中命中,因此使用的是3。也许你会问这个知识点我早就知道了,这和本问题有什么关…

    2025年8月6日
    3
  • git私有服务器架设_centos搭建git服务器

    git私有服务器架设_centos搭建git服务器一概述搭建自己的代码托管服务git服务,使用的是gitblit插件,具体操作搭建步骤详情见下文。客户端软件:git-2.34.1-64.bit服务端软件:gitblit-1.8.0二搭建过程2.1使用插件gitblit

    2022年10月4日
    5
  • angular table拖拽插件sortablejs

    angular table拖拽插件sortablejs1 npm 安装 sortablejsnp 只用这一个插件就可以实现拖拽 但是 angular 会报 无法找到模块 sortablejs 的声明文件 再安装 ngx sortablejsnp sortablejssa 安装好后在 package json 里查看一下版本号 如果是 3 几

    2026年3月16日
    2
  • mysql 全文索引 使用_MySql全文索引

    mysql 全文索引 使用_MySql全文索引使用索引是数据库性能优化的必备技能之一。在MySQL数据库中,有四种索引:聚集索引(主键索引)、普通索引、唯一索引以及我们这里将要介绍的全文索引(FULLTEXTINDEX)。全文索引(也称全文检索)是目前搜索引擎使用的一种关键技术。它能够利用「分词技术「等多种算法智能分析出文本文字中关键字词的频率及重要性,然后按照一定的算法规则智能地筛选出我们想要的搜索结果。在这里,我们就不追根究底其底层实现…

    2022年6月21日
    35
  • es与数据库的同步方案

    es与数据库的同步方案一、双写模式我们采取MySQL作为主要的数据存储,利用MySQL的事务特性维护数据一致性,使用ElasticSearch进行数据汇集和查询,此时es与数据库的同步方案就尤为重要。保证es与数据库的同步方案:1、首先添加商品入数据库,添加商品成功后,商品入ES,若入ES失败,将失败的商品ID放入redis的缓存队列(或MQ),且失败的商品ID入log文件(若出现redis挂掉,可从日志中取异…

    2022年5月18日
    38

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号