如何在apache kafka中删除主题

Ris*_*ora 67 java apache-kafka

我需要删除kafka-0.8.2.2.3中的主题.我使用以下命令删除主题:

bin/kafka-topics.sh --zookeeper localhost:2181 --delete --topic DummyTopic
Run Code Online (Sandbox Code Playgroud)

该命令执行成功,但是当我运行命令列出主题时,我可以看到该主题仍然存在,并显示标记为删除.

bin/kafka-topics.sh --list --zookeeper localhost:2181
DummyTopic - marked for deletion
Run Code Online (Sandbox Code Playgroud)

当我创建DummyTopic主题时,它会输出异常,主题已经存在,下面是堆栈跟踪:

Error while executing topic command Topic "DummyTopic" already exists.
kafka.common.TopicExistsException: Topic "DummyTopic" already exists.
    at kafka.admin.AdminUtils$.createOrUpdateTopicPartitionAssignmentPathInZK(AdminUtils.scala:248)
    at kafka.admin.AdminUtils$.createTopic(AdminUtils.scala:233)
    at kafka.admin.TopicCommand$.createTopic(TopicCommand.scala:92)
    at kafka.admin.TopicCommand$.main(TopicCommand.scala:54)
    at kafka.admin.TopicCommand.main(TopicCommand.scala)
Run Code Online (Sandbox Code Playgroud)

请让我知道如何删除此主题.

Rav*_*abu 84

自0.8.2.x版本以来,支持删除主题.您必须delete.topic.enable首先在所有代理上启用主题删除(设置为true).

注意:从1.0.x开始,delete.topic.enable默认情况下功能稳定true.

按照此步骤进行手动删除主题

  1. 停止Kafka服务器
  2. 使用logs.dirs命令删除主题目录
  3. 连接到Zookeeper实例:log.dir
  4. rm -rf
  5. 使用从ZooKeeper中删除主题文件夹 zookeeper-shell.sh host:port
  6. 重启Kafka服务器
  7. 使用此命令确认是否删除了它 ls /brokers/topics

  • "/ brokers/topics"目录在哪里?似乎无法找到该文件夹 (8认同)
  • `rmr` 命令已被弃用。您可以使用“deleteall”而不是“rmr” (7认同)
  • 我不敢相信删除主题如此困难 (5认同)
  • 我每隔几周就会访问这个答案。有时一周多次。 (3认同)
  • 嗯..现在我们只需要使用查询“bin/kafka-topics.sh --zookeeper localhost:2181 --delete --topic DummyTopic”中提到的命令,瞧,就完成了。 (3认同)
  • 链接坏了! (2认同)
  • 我不会推荐对产品集群使用这种 rm -rf 方法。正确的方法是在 server.properties 中启用删除主题。使用 --delete 等待这些主题上的偏移量自然过期。Zookeeper shell 卸载也可以工作,但会导致控制器节点发生变化。 (2认同)