【问题标题】:Delete topic in Kafka 0.8.1.1在 Kafka 0.8.1.1 中删除主题
【发布时间】:2014-08-08 21:18:18
【问题描述】:

我需要在 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

如何删除此主题?

【问题讨论】:

标签: apache-kafka


【解决方案1】:

在 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

Is it possible to delete a topic?

Jira KAFKA-1397

【讨论】:

  • 感谢您的信息。你知道如何按照指示清除整个 Kafka 和 Zookeeper 状态吗?
  • @EmPack IIRC,最简单的方法(如果您不关心正常运行时间)是关闭所有代理,删除该主题的日志并更改 ZK 命名空间。跨度>
【解决方案2】:

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

【讨论】:

  • 根据我的阅读,它可能在 0.8.1.1 版本中有效,但它可能不会... 一段时间以来,修复程序也在主干中,所以如果你直接从主干获取源,它应该工作
  • 我刚刚在 0.8.1.1 上尝试过,它报告“删除成功”但它没有工作。主题仍然存在,我可以附加一个消费者,它将报告所有以前的项目为待处理。
  • 在 Kafka 0.8.1.1 中删除主题不起作用。最近发布的 0.8.2.0 版本应该终于有了适当的删除支持。见blog.confluent.io/2014/12/02/whats-coming-in-apache-kafka-0-8-2
  • 顺便说一句,delete.topic.enable=true 的属性可以位于 server.properties 文件中。默认注释掉。
【解决方案3】:

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

我们仍然可以编程,通过

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

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

【讨论】:

  • 应该也包括zkClient.deleteRecursive(ZkUtils.getTopicConfigPath("test2"));和
  • @Sumit,还有什么?我没有使用那个“getTopicConfigPath”。实际上我不建议您删除 Kafka 0.8.1.1 上的主题。我可以通过这种方法删除这个主题,但是如果你检查zookeeper的日志,删除就会搞砸。
  • 但这也是 kafka 的做法(您建议的方式):apache.googlesource.com/kafka/+/0.8.1/core/src/main/scala/kafka/…
  • @Sumit。是的,我从那里找到了代码。我不确定那个“乱七八糟”的事情。因为一旦我在公司服务器上删除了一个主题,删除就会在 Zookeeper 日志中生成大量垃圾。但我无法在我的本地复制它。所以我不建议这样做..
【解决方案4】:

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

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

【讨论】:

    【解决方案5】:

    如文档here中所述

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

    确保 delete.topic.enable=true

    【讨论】:

    • 我相信该选项仅在 8.2 中可用
    【解决方案6】:

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

    rmr {path of the topic}
    

    示例:

    rmr /brokers/topics/test
    

    【讨论】:

    • 设置delete.topic.enable=true,然后从kafka中删除,然后也从zookeeper中删除...
    • 不会删除实际代理上的主题数据
    【解决方案7】:

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

    【讨论】:

    • 在我阅读您关于重新启动服务器的评论之前,这不起作用。谢谢你。
    【解决方案8】:

    命令:

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

    不幸的是,只标记了要删除的主题。

    删除不会发生。

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

    连接线程:

    【讨论】:

      【解决方案9】:

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

      bin/zookeeper-shell.sh zookeeperhost:port

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

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

      【讨论】:

        【解决方案10】:
        bin/kafka-topics.sh --delete --zookeeper localhost:2181 --topic <topic-name>
        

        【讨论】:

        • 标记要删除的主题,而不是阻止并等待删除
        • 虽然此代码可能会回答问题,但提供有关它如何和/或为什么解决问题的额外上下文将提高​​答案的长期价值。您可以在帮助中心找到更多关于如何写好答案的信息:stackoverflow.com/help/how-to-answer。祝你好运?
        【解决方案11】:

        在 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

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

        【讨论】:

        • 请注意,对于目前最新的 Kafka 版本 (1.0.0),该选项不会出现在 server.properties 文件中。您必须手动添加该行。
        • @DavidCorral 主题删除在 1.0.0 中默认启用
        【解决方案12】:

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

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

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

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

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

        【讨论】:

          【解决方案13】:

          第 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
          

          【讨论】:

            【解决方案14】:

            首先,你运行这个命令来删除你的主题:

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

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

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

            【讨论】:

              【解决方案15】:

              其实有一个不用碰那些bin/kafka-*.sh的解决方案:如果你已经安装了kafdrop,那么干脆做:

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

              【讨论】:

                猜你喜欢
                • 2018-11-16
                • 1970-01-01
                • 2019-07-07
                • 2018-07-02
                • 2017-10-17
                • 2016-12-31
                • 1970-01-01
                • 2022-11-03
                • 2020-02-16
                相关资源
                最近更新 更多