如何彻底删除Kafka中的topic (marked for deletion)

工作中因为各种原因, 例如topic中消息堆积的太多,或者kafka所在磁盘空间满了等等,可能需要彻底清理一下kafka topic,那么如何彻底删除topic?
方法一(配置delete.topic.enable=true)
  修改kafaka配置文件server.properties, 添加delete.topic.enable=true,重启kafka,之后通过kafka命令行就可以直接删除topic
  通过命令行删除topic:

    ./bin/kafka-topics.sh --delete --zookeeper {zookeeper server} --topic {topic name}

方法二(没有配置delete.topic.enable=true)

1、通过命令行删除topic:

./bin/kafka-topics.sh --delete --zookeeper {zookeeper server} --topic {topic name}

  因为kafaka配置文件中server.properties没有配置delete.topic.enable=true,此时的删除并不是真正的删除,只是把topic标记为:marked for deletion
  你可以通过命令:./bin/kafka-topics --zookeeper {zookeeper server} --list 来查看所有topic
2、删除kafka存储目录(server.properties文件log.dirs配置,默认为"/tmp/kafka-logs")相关topic目录

3, 若想真正删除它,需要登录zookeeper客户端:

  命令:./bin/zkCli.sh

  找到topic所在的目录:ls /brokers/topics

   执行命令:rmr /brokers/topics/{topic name}即可,此时topic被彻底删除。

  另外被标记为marked for deletion的topic你可以在zookeeper客户端中通过命令获得:ls /admin/delete_topics/{topic name},如果你删除了此处的topic,那么marked for deletion 标记消失

zookeeper 的config中也有有关topic的信息: ls /config/topics/{topic name}暂时不知道有什么用

总结

彻底删除topic:
1、确保kafka的配置文件server.proeprties中设置delete.topic.enable=true,如果没有, 确保cluster的所有kafka配置文件设置该参数并重启,然后直接通过命令删除,如果命令删除不了,直接通过zookeeper命令行删除掉broker下的topic。

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

参考文档:
1, https://stackoverflow.com/questions/17730905/is-there-a-way-to-delete-all-the-data-from-a-topic-or-delete-the-topic-before-ev

stop zookeeper & Kafka server,
then go to ‘kafka-logs’ folder , there you will see list of kafka topic folders, delete folder with topic name
go to ‘zookeeper-data’ folder , delete data inside that.
start zookeeper & kafka server again.
2, https://cwiki.apache.org/confluence/display/KAFKA/FAQ#FAQ-Isitpossibletodeleteatopic?
Deleting a topic is supported since 0.8.2.x. You will need to enable topic deletion (setting delete.topic.enable to true) on all brokers first.

3, https://cwiki.apache.org/confluence/display/KAFKA/KIP-162+-+Enable+topic+deletion+by+default

4, https://github.com/darrenfu/bigdata/issues/6

*** The only way to delete a topic permanently is as follows: ***

stop the brokers
sudo supervisorctl stop kafka-broker
remove the directories on disk
sudo rm -rf <kafka_data_dir>/<topic_name>*
remove the topic from zookeeper:
bin/zkCli.sh

rmr /config/topics/<topic_name>
rmr /brokers/topics/<topic_name>
rmr /admin/delete_topics/<topic_name>

verify the topic directory is deleted in zookeeper:
start the brokers back up
sudo supervisorctl start kafka-broker
re-create the kafka topic if needed

转自https://blog.csdn.net/russle/article/details/82881297

原文地址:https://www.cnblogs.com/zhtiy/p/11059596.html

时间: 2024-11-05 18:58:30

如何彻底删除Kafka中的topic (marked for deletion)的相关文章

彻底删除Kafka中的Topic

0:关闭Kafka 1:登录zookeeper客户端 [[email protected] zookeeper01]# ./bin/zkCli.sh (1)查看topic信息 ls /brokers/topics (2)删除所有topic deleteall /brokers/topics 2:删除kafka日志文件 rm kafka/log/* -rf 然后删除log.dirs文件夹下的所有日志文件. 3:启动Kafka 原文地址:https://www.cnblogs.com/yshyee/

Kafka日志及Topic数据清理

由于项目原因,最近经常碰到Kafka消息队列拥堵的情况.碰到这种情况为了不影响在线系统的正常使用,需要大家手动的清理Kafka Log.但是清理Kafka Log又不能单纯的去删除中间环节产生的日志,中间关联的很多东西需要手动同时去清理,否则可能会导致删除后客户端无法消费的情况. 在介绍手动删除操作之前,先简单的介绍一下Kafka消费Offset原理. 一.Kafka消费Offset 在通过Client端消费Kafka中的消息时,消费的消息会同时在Zookeeper和Kafka Log中保存,如

kafka中常用API的简单JAVA代码

通过之前<kafka分布式消息队列介绍以及集群安装>的介绍,对kafka有了初步的了解.本文主要讲述java代码中常用的操作. 准备:增加kafka依赖 <dependency> <groupId>org.apache.kafka</groupId> <artifactId>kafka-clients</artifactId> <version>0.10.2.0</version> </dependenc

手动删除Kafka Topic

一.删除Kafka topic 运行./bin/kafka-topics  --delete --zookeeper [zookeeper server]  --topic [topic name]:如果kafaka启动时加载的配置文件中server.properties没有配置delete.topic.enable=true,那么此时的删除并不是真正的删除,而是把topic标记为:marked for deletion 可以通过命令:./bin/kafka-topics --zookeeper

0022-如何永久删除Kafka的Topic

温馨提示:要看高清无码套图,请使用手机打开并单击图片放大查看. 1.问题描述 使用kafka-topics --delete命令删除topic时并没有真正的删除,而是把topic标记为:"marked for deletion",导致重新创建相同名称的Topic时报错"already exists". 2.问题复现 1.登录Kafka集群所在的服务器,创建一个test的topic [[email protected] ~]# kafka-topics --creat

Kafka中Topic级别配置

一.Kafka中topic级别配置 1.Topic级别配置 配置topic级别参数时,相同(参数)属性topic级别会覆盖全局的,否则默认为全局配置属性值. 创建topic参数可以设置一个或多个--config "Property(属性)",下面是创建一个topic名称为"my-topic"例子,它设置了2个参数max message size 和 flush rate. (A)创建topic时配置参数 bin/kafka-topics.sh --zookeeper

【帖子】怎么彻底删除kafka的topic,然后重建?

怎么彻底删除kafka的topic,然后重建? 网上都说用kafka-run-class.shkafka.admin.DeleteTopicCommand 命令删除topic,但是并没有成功,用kafka-topics.sh命令查看依然可以查看到topic,应该怎样才能彻底删除topic? 2016-01-01 添加评论 分享 2 个回复 OpenSkill - OpenSkill官方账号 赞同来自: Ansible .being **kafka 0.8.1.1以及之前版本**都无法使用类似一条

使用Java API创建(create),查看(describe),列举(list),删除(delete)Kafka主题(Topic)

使用Kafka的同学都知道,我们每次创建Kafka主题(Topic)的时候可以指定分区数和副本数等信息,如果将这些属性配置到server.properties文件中,以后调用Java API生成的主题将使用默认值,先改变需要使用命令bin/kafka-topics.sh --zookeeper localhost:2181 --alter --topic my-topic --config max.message.bytes=128000显示的修改,我们也希望将此过程在Producer调用之前通

apache kafka中server.properties配置文件参数说明

每个kafka broker中配置文件server.properties默认必须配置的属性如下: [java] view plaincopy broker.id=0 num.network.threads=2 num.io.threads=8 socket.send.buffer.bytes=1048576 socket.receive.buffer.bytes=1048576 socket.request.max.bytes=104857600 log.dirs=/tmp/kafka-logs