删除Kafka 0.8.1.1中的主题

时间:2014-06-18 14:12:53

标签: apache-kafka

我需要删除Apache Kafka 0.8.1.1中的主题test

documentation here所述,我执行了:

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

但是,这会产生以下消息:

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

如何删除此主题?

15 个答案:

答案 0 :(得分:96)

删除主题并不总是在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.

Is it possible to delete a topic?

Jira KAFKA-1397

答案 1 :(得分:95)

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

尽管如此,该命令仍然在代码中提供,可以执行:

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

答案 2 :(得分:37)

在$ {kafka_home} /config/server.properties

中添加以下行
delete.topic.enable=true

使用新配置重新启动kafka服务器:

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

删除您想要的主题:

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

答案 3 :(得分:10)

安德烈是对的。我们可以使用命令行来完成它。

我们仍然可以通过

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

实际上我不建议您删除Kafka 0.8.1.1上的主题。我可以通过这种方法删除这个主题,但是如果你检查zookeeper的日志,删除就搞砸了。

答案 4 :(得分:4)

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

rmr {path of the topic}

示例:

rmr /brokers/topics/test

答案 5 :(得分:4)

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

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

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

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

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

从kafka

中删除多个主题

(适用于测试目的,我创建了多个主题,并且必须为不同的场景删除它们)

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

    如果未列出任何主题,则所有主题都已成功删除。如果列出了主题,则删除操作不成功。再次尝试上述步骤或重新启动计算机。

答案 6 :(得分:2)

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

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

答案 7 :(得分:2)

命令:

bin/kafka-topics.sh --delete --zookeeper localhost:2181 --topic test
不幸的是,

仅标记要删除的主题。

删除不会发生。

在测试准备Kafka配置的任何脚本时会产生麻烦。

连接线程:

答案 8 :(得分:1)

如文档here

中所述
  

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

确保delete.topic.enable = true

答案 9 :(得分:1)

添加上述答案时,必须删除与zookeeper消费者偏移路径中该主题相关联的元数据。

bin/zookeeper-shell.sh zookeeperhost:port

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

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

答案 10 :(得分:1)

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

答案 11 :(得分:0)

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

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

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

请记住要通过诸如Kafka Tool之类的kafka管理工具监视整个过程。

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

答案 12 :(得分: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

答案 13 :(得分:0)

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

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

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

$ bin/kafka-topics.sh --list --bootstrap-server localhost:9092

答案 14 :(得分:0)

实际上有一个解决方案,无需触及那些 bin/kafka-*.sh:如果您已经安装了 kafdrop,那么只需执行:

url -XPOST http://your-kafdrop-domain/topic/THE-TOPIC-YOU-WANT-TO-DELETE/delete