0022-如何永久删除Kafka的Topic

温馨提示:要看高清无码套图,请使用手机打开并单击图片放大查看。

1.问题描述

使用kafka-topics --delete命令删除topic时并没有真正的删除,而是把topic标记为:“marked for deletion”,导致重新创建相同名称的Topic时报错“already exists”。

2.问题复现

1.登录Kafka集群所在的服务器,创建一个test的topic

[[email protected] ~]# kafka-topics --create --zookeeper ip-172-31-1-175.ap-southeast-1.compute.internal:2181 --replication-factor 1 --partitions 1 --topic test

2.查看新创建的topic

[[email protected] ~]# kafka-topics --list --zookeeper ip-172-31-1-175.ap-southeast-1.compute.internal:2181

3.通过如下命令删除新建的topic

[[email protected] ~]# kafka-topics --delete --zookeeper ip-172-31-1-175.ap-southeast-1.compute.internal:2181 --topic test

此处显示“Topic test is marked for deletion”

4.尝试重新创建一个test的Topic

[[email protected] ~]# kafka-topics --create --zookeeper ip-172-31-1-175.ap-southeast-1.compute.internal:2181 --replication-factor 1 --partitions 1 --topic test

提示该Topic已存在,说明在第3步操作的删除并没有真正的将Topic删除。

3.问题原因

默认情况下Kafka是禁用了删除Topic的操作,所以在执行Topic删除的时候只是将删除的Topic标记为“marked for deletion”状态。可以通过修改Kafka服务的配置参数启用。

4.解决方法

4.1方法1

在kafka服务配置delete.topic.enable=false的情况下,如果需要永久删除topic则需要做如下操作:

  • 通过kafka命令删除相应的topic
  • 在zookeeper中删除相应的topic
  • 在topic所在的broker节点上删除topic的log数据

操作如下:

1.查看topic的描述信息,命令如下

kafka-topics --describe --zookeeper ip-172-31-1-175.ap-southeast-1.compute.internal:2181 --topic test

上图标注部分为topic对应的数据存放节点

2.通过kafka命令删除,命令如下:

kafka-topics --delete --zookeeper ip-172-31-1-175.ap-southeast-1.compute.internal:2181 --topic test

3.通过zookeeper客户端删除topic,命令如下

zookeeper-client -server ip-172-31-1-175.ap-southeast-1.compute.internal:2181

ls /brokers/topics

rmr /brokers/topics/test

注:标红部分为topic的名称

4.登录到第1步中列出的对应节点的topic的log数据目录,此处我们Kafka的log.dirs目录配置为/var/local/kakfa,执行命令

[[email protected] data]$ sudo rm -rf test-0/

5.验证是否生效

创建一个名称为“test”的Topic,可以正常创建

注意:此处将topic为test的日志目录(/var/local/kafka/test-0)删除后,新创建的topic为test的日志目录不存在,重启Kafka服务后正常,目录能正常显示。

4.2方法2

在Kafka服务已配置delete.topic.enable=true的情况下,永久删除topic需要做如下操作:

  • 使用kafka命令删除topic

操作如下:

  1. 删除前数据查看:

kafka-topics --describe --zookeeper ip-172-31-1-175.ap-southeast-1.compute.internal:2181 --topic test

各个数据节点的信息:

Zookeeper信息:

2.通过kafka命令删除需要删除的topic,命令如下

kafka-topics --delete --zookeeper ip-172-31-1-175.ap-southeast-1.compute.internal:2181 --topic test

3.查看Zookeeper客户端topic信息

[zk: ip-172-31-1-175.ap-southeast-1.compute.internal:2181(CONNECTED) 9] ls /brokers/topics

4.查看brober节点上topic的日志数据

5.删除后成功后,验证是否能创建名称为test的Topic

注意:

如果Kafka服务配置了delete.topic.enable=true,直接通过命令行删除,未能删除Topic则可以通过zookeeper-client来进行删除。

如果Kafka服务未配置delete.topic.enable=true,直接通过delete命令删除topic,删除时只会将topic标记为“marked for deletion”,然后通过zookeeper-client进行删除是不会删除topic的data.log数据目录的,需要将相应的broker服务器上的data.log目录下相应的topic目录删除,data.log目录获取,可以通过CM界面查看:

建议:Kafka服务开启delete.topic.enable=true,开启方式如下:

开启后需要重启Kafka服务。

醉酒鞭名马,少年多浮夸! 岭南浣溪沙,呕吐酒肆下!挚友不肯放,数据玩的花!
温馨提示:要看高清无码套图,请使用手机打开并单击图片放大查看。

欢迎关注Hadoop实操,第一时间,分享更多Hadoop干货,喜欢请关注分享。


原创文章,欢迎转载,转载请注明:转载自微信公众号Hadoop实操

原文地址:http://blog.51cto.com/14049791/2319097

时间: 2024-08-30 02:04:59

0022-如何永久删除Kafka的Topic的相关文章

【帖子】怎么彻底删除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以及之前版本**都无法使用类似一条

手动删除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

如何彻底删除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 --de

彻底删除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中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 delete topic

Don't think it is supported yet. Take a look at this JIRA tracking Delete Topic. For delete manually Shutdown the cluster Clean kafka log dir (specified by the log.dir attribute in kafka config file ) as well the zookeeper data Restart the cluster Fo

【转】Kafka某topic无法消费解决方案&Kafka某Topic数据清理

由于项目原因,最近经常碰到Kafka消息队列某topic在集群宕机重启后无法消费的情况.碰到这种情况,有三步去判断原因所在: step A:如果用kafka串口(即console-consumer)是可以正常消费该topic,则排除kafka集群出现故障 step B:若平台业务能正常消费其他topic的消息,则排除平台业务代码逻辑问题 step C:不到万不得已,则只能手动删除kafka的对应topic的Log,但是清理Kafka Log又不能单纯的去删除中间环节产生的日志,中间关联的很多东西

雨后清风教你将回收站设置为在Windows10中立即永久删除文件

当用户删除文件时,它通常会移动到其回收站,以便以后可以在必要时还原文件.要从PC永久删除文件并回收文件正在使用的任何硬盘空间,您需要从回收站中删除文件.您可以从回收站中删除单个文件或立即清空整个回收站. 工具/原料 雨后清风U盘启动 雨后清风重装助手 如何在Windows 10中将回收站设置为立即永久删除文件 回收站在删除文件或文件夹时提供安全网.从硬盘中删除任何这些项目时,Windows会将其放在回收站中,并且"回收站"图标从空变为完全. 如果您有多个硬盘驱动器,分区或连接到PC的外

Kafka消息topic分区

kafka是为分布式环境设计的,因此如果日志文件,其实也可以理解成消息数据库,放在同一个地方,那么必然会带来可用性的下降,一挂全挂,如果全量拷贝到所有的机器上,那么数据又存在过多的冗余,而且由于每台机器的磁盘大小是有限的,所以即使有再多的机器,可处理的消息还是被磁盘所限制,无法超越当前磁盘大小.因此有了partition的概念. kafka对消息进行一定的计算,通过hash来进行分区.这样,就把一份log文件分成了多份.如上面的分区读写日志图,分成多份以后,在单台broker上,比如快速上手中,