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


77

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

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

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

Answers:


39

文艺青年最爱的套装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) ✗

问题的关键是有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

您还可以确保在经纪人日志中该设置为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

13
“耐心等待”有点不精确-在重新启动经纪人(0.8.2)并等待这些主题消失之后的几个小时里,我坐在这里,但是对它们何时会消失有一个粗略的指导会有所帮助。他们会坚持保留日志整整7天吗?
瑞克·莫里兹

12
经过一周的耐心等待,我认为链接的注释中的答案实际上是正确的:如果在创建主题期间未设置“ delete.topic.enable = true”,则删除时不会将其考虑在内。
瑞克·莫里茨

我遇到了问题,但是在修改server.properties并重新启动kafka和zookeeper之后,日志显示该主题已删除
Richard Valdivieso

2
请注意,从1.0开始,delete.topic.enable现在默认为true。版本-请参见issue.apache.org/jira/browse/KAFKA-5384
xmar,

1
我有一个主题“标记为删除”已经超过了一天。我不能无限期地“耐心”。我需要删除主题,并继续进行工作任务。
粘土

28

在我使用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之前,创建了要删除的主题。删除日志,重新启动没有用,因为主题仍然“标记为删除”
Pafnucy

16

你能行的。

sudo ./zookeeper-shell.sh本地主机:2181 rmr / brokers / topics / your_topic


13

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

  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。希望这能解决您的问题。


神圣的****。谢谢你!
Ankush92

另外,也许我要补充一下,至少对于我来说,不需要重启Kafka。
Ankush92

是的,这对我来说很快,不需要重新启动。谢谢 !
Apurv

4

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

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

一个用户删除主题在ATM上不起作用

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


并通过它0.8.1.1版本弹出的方式-我们最近做了一个升级(自0.8.1)将其和观察问题,以及
OM-NOM-NOM

3

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

我放下了动物园管理员和经纪人。在我的代理配置文件中将delete.topic.enable = true设置为启动zookeeper和boker

这个话题不见了...感谢Jacek Laskowski


3

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

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

1

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


1

删除几乎立即对我发生(v 0.9)。我相信对您来说应该一样。

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

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


0

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

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

该文档说:

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.