【问题标题】:When/how does a topic "marked for deletion" get finally removed?何时/如何最终删除“标记为删除”的主题?
【发布时间】:2014-07-21 12:23:45
【问题描述】:

我已发出删除主题的命令:

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

它似乎给出了愉快的回应:

[2014-05-31 20:58:10,112] INFO zookeeper state changed (SyncConnected) (org.I0Itec.zkclient.ZkClient)
Topic "vip_ips_alerts" queued for deletion.

但现在 10 分钟后主题仍然出现在 --list 命令中:

./bin/kafka-topics.sh --zookeeper localhost:2181 --list
vip_ips_alerts - marked for deletion

那是什么意思?该主题什么时候会被真正删除?如何加快此过程?

【问题讨论】:

    标签: apache-kafka


    【解决方案1】:

    正确答案其实如下。 HOT 关闭 Kafka 用户的群组电子邮件分发列表:

    François Langelier *@gmail.com über kafka.apache.org 05:57 (vor 1 Stunde)

    用户删除主题不起作用 ATM

    我认为它将在下一个版本中可用 https://issues.apache.org/jira/browse/KAFKA-1397

    【讨论】:

    • 顺便说一下,它出现在 0.8.1.1 版本上——我们最近对其进行了升级(从 0.8.1 开始)并观察到问题
    【解决方案2】:

    tl;drdelete.topic.enable = true 设置为 Kafka 代理的 config/server.properties 并...耐心等待。

    最新的 Kafka 开发版本会发生这种情况0.8.3-SNAPSHOT

    ➜  kafka_2.11-0.8.3-SNAPSHOT git:(trunk) ✗ ./bin/kafka-topics.sh --zookeeper localhost:2181 --create --topic my-topic --partitions 2 --replication-factor 1
    Created topic "my-topic".
    
    ➜  kafka_2.11-0.8.3-SNAPSHOT git:(trunk) ✗ ./bin/kafka-topics.sh --zookeeper localhost:2181 --describe --topic my-topic
    Topic:my-topic  PartitionCount:2    ReplicationFactor:1 Configs:
        Topic: my-topic Partition: 0    Leader: 0   Replicas: 0 Isr: 0
        Topic: my-topic Partition: 1    Leader: 0   Replicas: 0 Isr: 0
    
    ➜  kafka_2.11-0.8.3-SNAPSHOT git:(trunk) ✗ ./bin/kafka-topics.sh --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_2.11-0.8.3-SNAPSHOT git:(trunk) ✗ ./bin/kafka-topics.sh --zookeeper localhost:2181 --list
    ➜  kafka_2.11-0.8.3-SNAPSHOT git:(trunk) ✗
    

    关键是在config/server.properties 中包含delete.topic.enable=true,用于启动Kafka 代理。

    ➜  kafka_2.11-0.8.3-SNAPSHOT git:(trunk) ✗ grep delete.topic.enable config/server.properties
    delete.topic.enable=true
    

    您还可以确保代理日志中的设置为真:

    ➜  kafka_2.11-0.8.3-SNAPSHOT git:(trunk) ✗ ./bin/kafka-server-start.sh config/server.properties
    [2015-07-24 22:33:26,184] INFO KafkaConfig values:
            ...
            delete.topic.enable = true
    

    【讨论】:

    • “耐心点”有点不精确 - 我在重新启动代理 (0.8.2) 并等待这些主题消失几个小时后坐在这里,但有一个粗略的指导方针,知道它们何时会真正消失离开会很有帮助。他们会在整个 7 天的 log.retention 中坚持下去吗?
    • 耐心等待一周后,我认为链接评论中的答案实际上是正确的:如果在创建主题期间未设置“delete.topic.enable = true”,它将不考虑删除。
    • 我遇到了这个问题,但是在修改 server.properties 并重新启动 kafka 和 zookeeper 后,日志显示主题已被删除
    • 请注意,从 1.0 开始,delete.topic.enable 现在默认为 true。版本 - 见issues.apache.org/jira/browse/KAFKA-5384
    • 我有一个主题“标记为删除”超过一天。我不能无限期地“耐心”。我需要删除该主题并继续执行工作任务。
    【解决方案3】:

    在我使用 Kafka 8.2.2 的情况下,我必须手动删除以下条目 -

    1. 从 Kafka 代理机器中删除主题文件夹。
    2. 登录 zookeeper 和 -

      hbase zkcli
      rmr /brokers/topics/{topic_name}
      rmr /admin/delete_topics/{topic_name}
      

    【讨论】:

    • 只有这个对我有用,只使用 rmr 命令。使用 Kafka 11.0.1,要删除的主题是在将 delete.topic.enable 设置为 true 之前创建的。删除日志,重新启动不起作用,因为主题保持“标记为删除”
    【解决方案4】:

    我的问题是类似的。 我删除了一个主题,当我列出所有主题时它给了我同样的信息。

    我打倒了动物园管理员和经纪人。 在我的代理配置文件中设置 delete.topic.enable=true 开始动物园管理员和博克

    话题消失了……感谢 Jacek Laskowski

    【讨论】:

      【解决方案5】:

      你可以做到的。

      sudo ./zookeeper-shell.sh localhost:2181 rmr /brokers/topics/your_topic

      【讨论】:

        【解决方案6】:

        我遇到了同样的问题,并花了几天时间试图找出问题所在。我触发了删除主题的命令,但是主题被标记为删除,但它们没有被删除。

        1. 我首先检查了设置正确的配置。下:server.properties

          delete.topic.enable=true 对于所有代理

        2. 我重新启动了代理以检查主题是否被删除(否!!)。
        3. 我在 /kafka/data 文件夹下没有检查任何数据。
        4. 我什至考虑过等到超过保留时间的选项。

        没有任何帮助。我终于不得不登录 Zooker

        ./zkCli.sh # and delete the topics using 
        rmr /brokers/topics/<<topic>> and rmr /admin/delete_topics/<<topic>>
        

        请记住在此之后重新启动 kafka。 希望这能解决您的问题。

        【讨论】:

        • 神圣的****。谢谢!
        • 另外,我想补充一下,重启 Kafka 不是必须的,至少对我来说是这样。
        • 是的,这对我来说很快,无需重新启动。谢谢!
        【解决方案7】:

        我们在删除主题时遇到了这个问题。未设置 delete.topic.enable=true 时已创建主题。我们在配置中设置它,重新启动 kafka 以应用新配置。删除主题并看到“标记为删除”。然后我们再次重新启动了 kafka。 40 分钟后,尽管所有主题都已删除(9 个主题,总分区数以千计)。分区数较高的主题似乎需要更长的时间,这最初看起来像是什么都没有发生。

        【讨论】:

          【解决方案8】:

          对于kafka版本0.10.0.0,通过设置启用主题删除就足够了:

          delete.topic.enable
          

          这个话题很快就被删除了

          kafka-topics --delete --zookeeper your-zk:2181 --topic yourTopicName
          

          您可以使用以下命令确认它已消失:

          kafka-topics --describe --zookeeper your-zk:2181 --topic yourTopicName
          

          【讨论】:

            【解决方案9】:

            删除几乎立即发生在我身上(v 0.9)。我相信对你来说应该是一样的。

            一旦标记,删除将在作为主题分区领导者的 kafka 节点上触发。需要记住的是,topic partition leader必须配置正确(就监听器而言),否则它不会收到删除日志的指令。

            在我更正服务器属性并重新启动相应节点之前,我的“标记为删除”主题一直停留在该状态。

            【讨论】:

              【解决方案10】:

              在 zookeeper 上查看主题状态

              bin\windows>kafka-topics.bat --list --zookeeper localhost:2181
              Output: topic shows marked for deletion
              

              server.properties 中设置 delete.topic.enable=true 效果不佳。

              解决方案: 检查 zookeeper.properties 文件中的 zookeeper 数据目录位置。 它是 dataDir=/tmp/zookeeper
              将“dataDir”更新到新位置后问题得到解决。

              dataDir=zk-temp
              # the port at which the clients will connect
              clientPort=2181
              # disable the per-ip limit on the number of connections since this is a non-production config
              maxClientCnxns=0
              

              【讨论】:

                【解决方案11】:

                在 Kafka 中,一旦主题被标记为删除,它将在 60000 毫秒后最终被删除。

                检查属性 log.segment.delete.delay.ms。

                文档说:

                file.delete.delay.ms:从文件中删除文件之前的等待时间 文件系统 默认值为 60000 毫秒。

                【讨论】:

                  【解决方案12】:

                  如果上面没有任何效果,您可以尝试以下:

                  First, log into the Zookeeper CLI console using the proper ‘zkCli.sh’ file, you’ll find this in the ‘bin’ directory in your Zookeeper installation.

                  2. get /brokers/topics/&lt;topic_name&gt;

                  3. rmr /brokers/topics/&lt;topic_name&gt;

                  4. rmr /admin/delete_topics/&lt;topic_name&gt;

                  【讨论】:

                    【解决方案13】:

                    2021/22 - rmr 已弃用,使用 deleteall

                    1。登录 Zookeeper:

                    Linux

                    转到 bin 文件夹:

                    .\zookeeper-shell.sh localhost:2181
                    

                    窗口

                    转到 bin\windows 文件夹:

                    .\zookeeper-shell.bat localhost:2181
                    

                    2。删除主题

                    deleteall /brokers/topics/NameOfTopicToDelete
                    

                    不再需要运行: deleteall /admin/delete_topics/NameOfTopicToDelete

                    重启zookeeper和kafka。如果您现在尝试删除主题,您将得到:

                    节点不存在错误。

                    【讨论】:

                      猜你喜欢
                      • 2017-11-17
                      • 2023-02-25
                      • 2016-12-31
                      • 2023-04-01
                      • 1970-01-01
                      • 1970-01-01
                      • 1970-01-01
                      • 2012-05-08
                      • 2016-12-10
                      相关资源
                      最近更新 更多