Kafka——彻底删除Topic

DevOpSec
• 阅读 541

一、配置

server.properties 设置 delete.topic.enable=true

如果没有设置 delete.topic.enable=true,则调用kafka 的delete命令无法真正将topic删除,而是显示(marked for deletion)

二、停止消费

如果需要被删除topic 此时正在被程序 produce和consume,则这些生产和消费程序需要停止。

因为如果有程序正在生产或者消费该topic,则该topic的offset信息一致会在broker更新。调用kafka delete命令则无法删除该topic。

同时,需要设置 auto.create.topics.enable = false,默认设置为true。如果设置为true,则produce或者fetch 不存在的topic也会自动创建这个topic。这样会给删除topic带来很多意向不到的问题。

所以,这一步很重要,必须设置auto.create.topics.enable = false,并认真把生产和消费程序彻底全部停止。

三、删除命令

进入kafka安装主目录,执行以下命令删除:

bin/kafka-topics.sh -delete --zookeeper 172.16.10.91:2181,172.16.10.92:2181,172.16.10.93:2181 --topic logstash-log-dev

-----------------------------------------------------------------------------------------【彻底删除分割线】------------------------------------------------------------------------------------------------------

一般而言,经过上面3步就可以正常删除掉topic和topic的数据。但是,如果还是无法正常删除topic,则需要对kafka在zookeeer的存储信息进行删除。具体操作如下:

四、删除zk数据目录

进入安装zk主目录,执行以下命令登陆:

bin/zkCli.sh -server 【zookeeper server:port】

登录到zk shell,执行以下命令找到topic所在的目录:

ls /brokers/topics

找到要删除的topic,然后执行命令,此时topic被彻底删除

rmr /brokers/topics/【topic name】

如果topic 是被标记为 marked for deletion,则通过命令 ls /admin/delete_topics,找到要删除的topic,然后执行命令:

rmr /admin/delete\_topics/【topic name】

五、删除kafka数据目录

删除kafka存储目录(server.properties文件log.dirs配置,默认为"/data/kafka-logs")相关topic的数据目录。

注意:如果kafka 有多个 broker,且每个broker 配置了多个数据盘(比如 /data/kafka-logs,/data1/kafka-logs ...),且topic也有多个分区和replica,则需要对所有broker的所有数据盘进行扫描,删除该topic的所有分区数据。

六、验证

在kafka安装主目录,执行以下命令查看现在kafka的topic信息。

./bin/kafka-topics.sh --list --zookeeper 【zookeeper server:port】

正常情况下删除的topic就不会再显示。但是,如果还能够查询到删除的topic,则重启zk和kafka即可。

本文转自 https://www.cnblogs.com/caoweixiong/p/11748180.html,如有侵权,请联系删除。

点赞
收藏
评论区
推荐文章
Easter79 Easter79
3年前
springboot+kafka集成
kafka概念  Topic:消息根据Topic进行归类,可以理解为一个队里。  Producer:消息生产者,就是向kafkabroker发消息的客户端。  Consumer:消息消费者,向kafkabroker取消息的客户端。  broker:每个kafka实例(server),一台kafka服务器就是一个broker,一个集群
Easter79 Easter79
3年前
Storm结合kafka参数配置详解+代码示例(累计单词出现的次数)
kafka参数配置详情:publicfinalBrokerHostshosts;//设置kafka从哪里获取相关的配置信息publicfinalStringtopic;//从哪个topic开始消费publicfinalStringclientId;//设置客户端标识publicintfetchSizeBytes10
Stella981 Stella981
3年前
Kafka监控工具kafka
KafkaMonitor为Kafka的可视化管理与监控工具,为Kafka的稳定运维提供高效、可靠、稳定的保障,这里主要简单介绍KafkaMonitor的相关功能与页面的介绍;  KafkaMonitorv0.1主要功能有:Kafka基本信息仪表盘、broker列表、topic列表、当前消费者列表、Topic添加删除、Topic数据
Wesley13 Wesley13
3年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Stella981 Stella981
3年前
Kafka Java API获取非compacted topic总消息数
目前Kafka并没有提供直接的工具来帮助我们获取某个topic的当前总消息数,需要我们自行写程序来实现。下列代码可以实现这一功能,特此记录一下:/获取某个topic的当前消息数Java8only@paramtopic@
Stella981 Stella981
3年前
Kafka常用操作
Kafka的版本间差异较大,下面是0.8.1的操作方法首先cd到kafaka的bin目录下,操作kafka的工具都在这里呢。如果发现找不到,或者名字不对,说明kafka版本不对。以topic是test为例子zookeeper后的ip改成你们自己的创建topic./kafkatopics.shtopictestcreate
Stella981 Stella981
3年前
Kafka基于topic的分区设计
1.若没有分区,一个topic对应的消息集在分布式集群服务组中,就会分布不均匀,即可能导致某台服务器A记录当前topic的消息集很多,若此topic的消息压力很大的情况下,服务器A就可能导致压力很大,吞吐也容易导致瓶颈。有了分区后,假设一个topic可能分为10个分区,kafka内部会根据一定的算法把10分区尽可能均匀分布到不同的服务器上,比如:A服务
Stella981 Stella981
3年前
Kafka常用命令
Kafka命令行工具1.查看Kafka现有的Topic1bin/kafkatopics.shzookeeperlocalhost:2181list2.查看Topic详情1bin/kafkatopics.shzo
Stella981 Stella981
3年前
Kafka设计解析(三):Kafka High Availability (下)
本文在上篇文章基础上,更加深入讲解了Kafka的HA机制,主要阐述了HA相关各种场景,如Brokerfailover、Controllerfailover、Topic创建/删除、Broker启动、Follower从Leaderfetch数据等详细处理过程。同时介绍了Kafka提供的与Replication相关的工具,如重新分配Partition等。
Stella981 Stella981
3年前
Django中Admin中的一些参数配置
设置在列表中显示的字段,id为django模型默认的主键list_display('id','name','sex','profession','email','qq','phone','status','create_time')设置在列表可编辑字段list_editable
DevOpSec
DevOpSec
Lv1
懂开发的运维,懂安全的运维。公众号:DevOpSec
文章
57
粉丝
6
获赞
26