一、概述

生产环境中,有一个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数据的更多相关文章

  1. kafka 删除topic清空数据

    原 kafka 删除topic清空数据 2018年11月20日 18:17:50 Ming! 阅读数:1391   版权声明:版权声明:本文为博主原创文章,未经博主允许不得转载. https://bl ...

  2. kafka删除topic及其相关数据

    1.删除kafka存储目录(server.properties文件log.dirs配置,默认为"/tmp/kafka-logs")相关topic目录 2.Kafka 删除topic ...

  3. kafka删除topic的方法及我在kafka上边的一些经验

    我在本地做kafka的producer调试,每隔一段时间后,所使用的topic管道就会堆积数据,而且我这边使用的是  kafka   bin 下的consumer命令单独消费的,每次都是  --fro ...

  4. kafka 清除topic数据脚本

    原 kafka 清除topic数据脚本 2018年07月25日 16:57:13 pete1223 阅读数:1028     #!/bin/sh       param=$1   echo " ...

  5. kafka删除主题数据和删除主题

    1.删除主题 在server.properties中增加设置,默认未开启 delete.topic.enable=true 删除主题命令 /bin/kafka-topics --delete --to ...

  6. kafka删除topic详解

    1.删除topic命令 bin/kafka-topics.sh --delete --zookeeper 192.168.242.131:2181 --topic aaa 注:此命令如果要生效,还需在 ...

  7. kafka 删除topic

    两种方法: 一.修改配置文件server.properties 添加如下配置: delete.topic.enable=true 说明:官方给的文档说明“Enables delete topic. D ...

  8. kafka删除topic中的数据,适用于比较高的版本

    server.properties中增加选项 delete.topic.enable=true 修改之后重启kafka 进入kafka目录,输入命令 bin/kafka-topics.sh --zoo ...

  9. kafka删除topic

    手动: 删除kafka存储目录(server.properties文件log.dirs配置,默认为"/tmp/kafka-logs")相关topic目录 删除zookeeper & ...

随机推荐

  1. Spark记录-Scala程序例子(函数/List/match/option/泛型/隐式转换)

    object func { def main(args:Array[String]):Unit={ //函数赋值给变量时, 必须在函数后面加上空格和下划线. def sayHello(name: St ...

  2. 【JUC】JDK1.8源码分析之ReentrantReadWriteLock

    重入锁ReentrantLock是排他锁,排他锁在同一时刻仅有一个线程可以进行访问,但是在大多数场景下,大部分时间都是提供读服务,而写服务占有的时间较少.然而读服务不存在数据竞争问题,如果一个线程在读 ...

  3. .NET 单点登录开源项目

    1. https://www.apereo.org/cas/client-integration 2.源码下载 https://wiki.jasig.org/display/CASC/.Net+Cas ...

  4. Java SE之正则表达式Demo

    @Test public void regex() {//匹配教务系统课程 // String content = "公共机座 (1-10)".replaceAll(" ...

  5. bzoj 4184: shallot (线段树维护线性基)

    题面 \(solution:\) 这一题绝对算的上是一道经典的例题,它向我们诠释了一种新的线段树维护方式(神犇可以跳过了).像这一类需要加入又需要维护删除的问题,我们曾经是遇到过的像莫对,线段树... ...

  6. d2-admin中那些不错的技巧

    d2-admin基于vue-cli3 路由相关 刷新路由,参照官方  组件内的守卫 但是搞不明白为何加了句 render:h => h() { path: 'refresh', name: 'r ...

  7. chrome面板介绍

    Chrome开发者工具详解(1):Elements.Console.Sources面板 Chrome 开发者工具详解(2):Network 面板 Chrome开发者工具详解(3):Timeline面板 ...

  8. Ajax文件上传并添加Bootstrap进度条

    1.项目中需要用到文件上传和显示进度,网上各种插件搞得头晕,决定自己实现一个 三个步骤:Ajax上传文件,获取上传进度,显示进度 html: <!DOCTYPE HTML> <htm ...

  9. C 语言 register 关键字

    register:这个关键字请求编译器尽可能的将变量存在CPU内部寄存器中,而不是通过内存寻址访问,以提高效率.注意是尽可能,不是绝对.你想想,一个CPU 的寄存器也就那么几个或几十个,你要是定义了很 ...

  10. C++学习6-面向对象编程基础(运算符重载、类的派生与继承、命名空间)

    运算符重载 重载的运算符是具有特殊名字的函数:它们的名字由关键字operator和其后要定义的运算符号共同组成.重载的运算符是遵循函数重载的选择原则,根据不同类型或不同参数来选择不同的重载运算符. 运 ...