何时/如何最终删除“标记为删除”的主题?

时间:2014-06-01 04:05:17

标签: apache-kafka

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

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

那是什么意思?该主题什么时候真的删除?我如何加快这个过程?

13 个答案:

答案 0 :(得分:32)

tl; dr delete.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) ✗

关键是在delete.topic.enable=true中使用config/server.properties来启动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

答案 1 :(得分:21)

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

  1. 从Kafka经纪人机器中删除主题文件夹。
  2. 登录zookeeper并 -

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

答案 2 :(得分:14)

你可以做到。

  

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

答案 3 :(得分:10)

我遇到了同样的问题,花了几天时间试图找出问题所在。我触发了删除主题的命令,但主题已标记为删除但未删除。

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

    所有经纪人的delete.topic.enable = true

  2. 我重新启动代理以检查主题是否被删除(No !!)。
  3. 我在/ kafka / data文件夹下没有检查数据。
  4. 我甚至考虑过等待保留时间超过的选项。
  5. 没有帮助。我不得不最后登录zooker

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

    请记得在此之后重启kafka。 希望这能解决你的问题。

答案 4 :(得分:4)

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

  

FrançoisLangelier*@gmail.comüberkafka.apache.org05:57   (vor 1 Stunde)

     

用户删除主题无效ATM

     

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

答案 5 :(得分:2)

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

我把动物园管理员和经纪人带了下来。 在我的代理配置文件中设置delete.topic.enable = true 开始动物园管理员和boker

主题已经消失......感谢Jacek Laskowski

答案 6 :(得分:2)

对于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

答案 7 :(得分:2)

在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

答案 8 :(得分:1)

删除主题时遇到此问题。当尚未设置delete.topic.enable = true时,已创建主题。我们在config中设置,重新启动kafka以应用新配置。删除主题并看到“标记为删除”。然后我们又重新启动了kafka。 40分钟后,所有主题都被删除了(9个主题,总分区数以千计)。分区数量较多的主题似乎需要更长时间,最初看起来似乎没有发生任何事情。

答案 9 :(得分:1)

对于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

答案 10 :(得分:1)

删除几乎立即发生(v 0.9)。我相信你应该是一样的。

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

我已将我的标记删除&#34;主题一直停留在该状态,直到我更正了我的服务器属性并重新启动了相应的节点。

答案 11 :(得分:0)

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

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

文档说:

  

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

答案 12 :(得分:0)

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

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/<topic_name>

3. rmr /brokers/topics/<topic_name>

4. rmr /admin/delete_topics/<topic_name>