在Kafka 0.8.1.1中删除主题


92

我需要test在Apache Kafka 0.8.1.1中删除该主题。

如此处的文档所述,我已执行:

bin/kafka-topics.sh --zookeeper localhost:2181 --delete --topic test

但是,这导致以下消息:

Command must include exactly one action: --list, --describe, --create or --alter

如何删除该主题?


:由步骤过程步骤是在解释stackoverflow.com/questions/33537950/...
拉温德拉巴布

Answers:


107

删除主题在0.8.1.1中并不总是有效

删除应该在下一个版本0.8.2中进行

kafka-topics.sh --delete --zookeeper localhost:2181 --topic your_topic_name

  Topic your_topic_name is marked for deletion.
  Note: This will have no impact if delete.topic.enable is not set to true.

是否可以删除主题?

吉拉KAFKA-1397


谢谢(你的)信息。您知道如何按照指示清除整个卡夫卡和Zookeeper状态吗?
EmPak5 2014年

@EmPack IIRC,最简单的方法(如果您不关心正常运行时间)是关闭所有代理,删除该主题的日志并更改ZK命名空间。
2014年

95

由于已知的错误,似乎删除命令未在Kafka 0.8.1.x中正式记录(https://issues.apache.org/jira/browse/KAFKA-1397)。

尽管如此,该命令仍在代码中附带,并且可以按以下方式执行:

bin/kafka-run-class.sh kafka.admin.DeleteTopicCommand --zookeeper localhost:2181 --topic test

同时,该错误已修复,并且删除命令现在可以从Kafka 0.8.2.0正式获得,如下所示:

bin/kafka-topics.sh --delete --zookeeper localhost:2181 --topic test

根据我的阅读,它可能可以在0.8.1.1下运行,但可能无法...一段时间以来,该修复程序也在主干中,因此,如果直接从主干中获取源代码,它应该可以工作
坦率地说,2014年

我刚刚尝试了0.8.1.1,它报告“删除成功”,但是没有用。主题仍然存在,我可以附加一个使用者,它将之前的所有项目报告为待处理。
Elias Dorneles

在Kafka 0.8.1.1中删除主题无效。最近发布的0.8.2.0版最终应该具有适当的删除支持。参见blog.confluent.io/2014/12/02/whats-coming-in-apache-kafka-0-8-2
Michael G. Noll

顺便说一句,delete.topic.enable = true的属性可以位于server.properties文件中。默认情况下已将其注释掉。
Shanemeister

37

在$ {kafka_home} /config/server.properties中添加以下行

delete.topic.enable=true

用新的配置重启卡夫卡服务器:

${kafka_home}/bin/kafka-server-start.sh ~/kafka/config/server.properties

删除您想要的主题:

${kafka_home}/bin/kafka-topics.sh --delete  --zookeeper localhost:2181  --topic daemon12

10

安德里亚是正确的。我们可以使用命令行来完成。

而且我们仍然可以通过编程

ZkClient zkClient = new ZkClient("localhost:2181", 10000);
zkClient.deleteRecursive(ZkUtils.getTopicPath("test2"));

实际上,我不建议您删除有关Kafka 0.8.1.1的主题。我可以通过这种方法删除此主题,但是如果您检查了Zookeeper的日志,则删除会将其弄乱。


是否还应该包含zkClient.deleteRecursive(ZkUtils.getTopicConfigPath(“ test2”)); 和
Sumit 2014年

@Sumit,还有什么?我没有使用“ getTopicConfigPath”。实际上,我不建议您删除有关Kafka 0.8.1.1的主题。我可以通过这种方法删除此主题,但是如果您检查了Zookeeper的日志,则删除会将其弄乱。

但这也是kafka的做法(您建议的方式):apache.googlesource.com/kafka
Sumit

@Sumit。是的,我从那里找到了代码。我不确定那件事“乱七八糟”。因为一旦删除公司服务器上的主题,该删除就会对Zookeeper日志产生很多垃圾。但是我无法在本地复制它。所以我不建议..

4

您可以test从zookeeper shell命令(zookeeper-shell.sh)中删除特定的kafka主题(例如:)。使用以下命令删除主题

rmr {path of the topic}

例:

rmr /brokers/topics/test

设置delete.topic.enable = true,然后从kafka中删除,然后再从zookeeper中删除...
minhas23

4

在Kafka中删除1个或多个主题的步骤

要删除kafka中的主题,需要在Kafka服务器中启用delete选项。

1. Go to {kafka_home}/config/server.properties
2. Uncomment delete.topic.enable=true

在Kafka中删除一个Topic,输入以下命令

kafka-topics.sh-删除--zookeeper localhost:2181 --topic

从kafka删除多个主题

(出于测试目的,我创建了多个主题,并且不得不针对不同的场景将其删除)

  1. 停止Kafka服务器和Zookeeper
  2. 转到存储日志的/ tmp文件夹,并手动删除kafkalogs和zookeeper文件夹
  3. 重新启动zookeeper和kafka服务器并尝试列出主题,

bin / kafka-topics.sh --list --zookeeper本地主机:2181

如果没有列出主题,则所有主题均已成功删除。如果列出了主题,则删除失败。再次尝试上述步骤或重新启动计算机。


请注意,对于当前的最新Kafka版本(1.0.0),该选项未出现在server.properties文件中。您必须手动添加该行。
David Corral

@DavidCorral主题删除默认在1.0.0中启用
Tanner

2

此步骤将删除所有主题和数据

  • 停止Kafka服务器和Zookeeper服务器
  • 删除两个服务的tmp数据目录,默认情况下它们是C:/ tmp / kafka-logs和C:/ tmp / zookeeper。
  • 然后启动Zookeeper服务器和Kafka服务器


1

除了上述答案外,还必须删除Zookeeper使用者补偿路径中与该主题关联的元数据。

bin/zookeeper-shell.sh zookeeperhost:port

rmr /consumers/<sample-consumer-1>/offsets/<deleted-topic>

否则,在基于zookeeper的kafka监控工具中,延迟将是负的。


1

作为文档提到这里

默认情况下禁用主题删除选项。要启用它,请设置服务器配置delete.topic.enable = true Kafka当前不支持减少主题的分区数或更改复制因子。

确保delete.topic.enable = true


我相信选项仅在8.2可用
spuder


0

如果您在删除主题时遇到问题,请尝试使用以下方法删除主题:

$KAFKA_HOME/bin/kafka-topics.sh --delete --zookeeper localhost:2181 --topic your_topic_name

命令。然后,为了验证删除过程,请转到通常位于下的kafka logs目录/tmp/kafka-logs/,然后your_topic_name通过rm -rf your_topic_name命令删除文件。

记住要通过kafka管理工具(例如)来监视整个过程Kafka Tool

上面提到的过程将在不重新启动kafka服务器的情况下删除主题。


0

步骤1:确定您已连接Zookeeper和Kafka

第2步:要删除Kafka主题,请运行Kafka-topic(Mac)或Kafka-topic.sh(如果使用)(Linux / Mac),添加端口和--topic以及您的主题名称,并--delete即可,只需使用成功。

# Delete the kafka topic
# it will delete the kafka topic
kafka-topics --zookeeper 127.0.0.1:2181 --topic name_of_topic --delete
# or
kafka-topics.sh --zookeeper 127.0.0.1:2181 --topic name_of_topic --delete

0

首先,运行以下命令删除主题:

$ bin/kafka-topics.sh --delete --bootstrap-server localhost:9092 --topic <topic_name>

列出活动主题以检查是否完全删除:

$ bin/kafka-topics.sh --list --bootstrap-server localhost:9092
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.