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

jav*_*dba 67 apache-kafka

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

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

它似乎给出了一个快乐的回应:

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

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

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

那是什么意思呢?当将话题被真正删除?我该如何加快这个过程?

Jac*_*ski 34

文艺青年最爱的套装delete.topic.enable = trueconfig/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) ?
Run Code Online (Sandbox Code Playgroud)

问题的关键是有delete.topic.enable=trueconfig/server.properties您使用启动卡夫卡经纪人.

?  kafka_2.11-0.8.3-SNAPSHOT git:(trunk) ? grep delete.topic.enable config/server.properties
delete.topic.enable=true
Run Code Online (Sandbox Code Playgroud)

您还可以确保在代理的日志中设置为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
Run Code Online (Sandbox Code Playgroud)

  • "耐心等待"有点不精确 - 我在重新启动经纪人(0.8.2)后几个小时就坐在这里,并等待这些话题消失,但是如果他们真正离开这些话题的粗略指导将会有所帮助.他们会在整整七天的记录中留下来吗? (11认同)
  • 在耐心等待一周后,我认为链接注释中的答案实际上是正确的:如果在创建主题期间未设置"delete.topic.enable = true",则不会将其考虑用于删除. (8认同)
  • 我有一个主题“标记为删除”超过一天。我不能无限期地“耐心”。我需要删除该主题并继续执行工作任务。 (3认同)
  • 请注意,从1.0开始,delete.topic.enable现在默认为true。版本-请参阅https://issues.apache.org/jira/browse/KAFKA-5384 (2认同)

tes*_*k03 24

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

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

    hbase zkcli
    rmr /brokers/topics/{topic_name}
    rmr /admin/delete_topics/{topic_name}
    
    Run Code Online (Sandbox Code Playgroud)


小智 15

你能行的.

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


小智 11

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

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

    delete.topic.enable = true表示所有经纪人

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

没人帮忙.我不得不最后登录zooker

./zkCli.sh # and delete the topics using 
rmr /brokers/topics/<<topic>> and rmr /admin/delete_topics/<<topic>>
Run Code Online (Sandbox Code Playgroud)

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