代码之家  ›  专栏  ›  技术社区  ›  dave4420

如何从cli中删除卡夫卡主题?

  •  0
  • dave4420  · 技术社区  · 6 年前
    $ kafka-topics --zookeeper localhost:2181 --list | grep my-topic
    my-topic
    $ kafka-topics --zookeeper localhost:2181 --delete --topic my-topic
    Topic my-topic is marked for deletion.
    Note: This will have no impact if delete.topic.enable is not set to true.
    $ kafka-topics --zookeeper localhost:2181 --list | grep my-topic
    my-topic - marked for deletion
    

    从那以后已经几个小时了,这个话题仍然没有被删除。

    我看到了一些建议,我应该 delete.topic.enable 在我的 server.properties 重启卡夫卡。我试过了。它没有起作用。

    $ grep -F delete.topic.enable /usr/local/etc/kafka/server.properties
    delete.topic.enable = true
    

    (为什么默认情况下不设置此选项?)

    无论如何,这些建议都是针对卡夫卡0的。*我正在使用更新的版本。

    $ brew list --versions kafka
    kafka 1.1.0
    

    如何删除主题?

    我可以关掉卡夫卡和动物园管理员,快跑 rm -r /usr/local/var/lib/kafka-logs /usr/local/var/run/zookeeper/data ,然后再次启动zookeeper和kafka。但这相当激烈。当然应该有某种说服的方法 kafka-topics 删除一个话题?

    2 回复  |  直到 6 年前
        1
  •  1
  •   Mickael Maison    6 年前

    建议使用您正在使用的命令来删除主题。

    不幸的是,有几个原因可以解释为什么一个主题会停留在“标记为删除”的状态。

    如果查看控制器日志,您可能会发现为什么它无法删除它。在控制器日志中,删除管理器中的所有行都以 Topic Deletion Manager .

    你应该定期看到这样的消息 Handling deletion for topics ... .如果控制器放弃删除,则应使用以下格式记录: Halted deletion of topics ... .

    如果要强制删除,可以尝试:

    • 删除Zookeeper中的主题详细信息。使用 zookeeper-shell.sh rmr /brokers/topics/TOPIC_NAME
    • 弹跳控制器

    最后,如果这些都不起作用,您可以按照提示删除磁盘上的日志数据/

        2
  •  1
  •   dave4420    6 年前

    根据一位同事的建议,我

    • 关闭卡夫卡和动物园管理员
    • 添加了一行 listeners=PLAINTEXT://127.0.0.1:9092 /usr/local/etc/kafka/server.properties
    • 重新启动动物园管理员和卡夫卡

    现在我可以再次删除主题了。我不知道为什么会这样,但我怀疑这与最近的macOS升级有关。