繁体   English   中英

在 Kafka 0.8.1.1 中删除主题

[英]Delete topic in Kafka 0.8.1.1

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

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

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

但是,这会导致以下消息:

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

我怎样才能删除这个话题?

在 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.

你也可以传入一个引导服务器而不是 zookeeper:

kafka-topics.sh --bootstrap-server kafka:9092 --delete --topic your_topic_name

是否可以删除主题?

吉良 KAFKA-1397

由于已知错误( 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

在 ${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

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

我们仍然可以对其进行编程,通过

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

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

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

#要删除 kafka 中的主题,需要在 Kafka 服务器中启用删除选项。 1. 转到 {kafka_home}/config/server.properties 2. 取消注释 delete.topic.enable=true

#删除Kafka中的一个Topic 输入以下命令

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

#从kafka中删除多个主题(有利于测试目的,我创建了多个主题并且必须针对不同的场景删除它们)

  1. 停止 Kafka 服务器和 Zookeeper
  2. 转到存储日志的服务器文件夹(在其配置文件中定义)并手动删除 kafkalogs 和 zookeeper 文件夹
  3. 重启zookeeper和kafka服务器,尝试列出topic,

bin/kafka-topics.sh --list --zookeeper localhost:2181

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

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

rmr {path of the topic}

例子:

rmr /brokers/topics/test

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

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

如文档here中所述

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

确保 delete.topic.enable=true

命令:

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

不幸的是,仅将主题标记为删除。

不会发生删除

在测试准备 Kafka 配置的任何脚本时,这会带来麻烦。

连接线程:

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

bin/zookeeper-shell.sh zookeeperhost:port

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

否则,在基于 zookeeper 的 kafka 监控工具中,滞后将是负数。

首先,您运行此命令来删除您的主题:

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

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

$ bin/kafka-topics.sh --list --bootstrap-server localhost:9092
bin/kafka-topics.sh --delete --zookeeper localhost:2181 --topic <topic-name>

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

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

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

记得通过Kafka Tool等 kafka 管理工具监控整个过程。

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

第 1 步:确保您已连接到 Zookeeper 和运行的 Kafka

第 2 步:要删除 Kafka 主题运行 kafka-topics 脚本,添加端口和 --topic 以及您的主题名称和 --delete 它只是删除成功的主题。

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

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

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

这对我有用:

kafka-topics --delete --bootstrap-server localhost:9092 --topic user-commands

我正在使用 Confluent CLI 并在我安装它的目录上运行它。

最近的 Kafka 版本即将删除 Zookeeper 依赖项。 因此,您应该改为引用代理(通过--boostrap-server ):

kafka-topics \
    --bootstrap-server localhost:9092,localhost:9093,localhost:9094 \
    --delete \
    --topic topic_for_deletion

用于融合云 -

$ confluent kafka topic delete my_topic

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM