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

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

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

那么这意味着什么? 什么时候 真的的主题将被删除? 我如何加快这个过程?

105750 次浏览

正确答案实际上是这样的:

弗朗索瓦 · 朗格利埃(François Langelier) *@gmail.com 关于 kafka.apache.org 05:57 (1小时前)

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

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

在卡夫卡经纪人的 config/server.properties中设置 delete.topic.enable = true,并且... 要有耐心。

这种情况发生在卡夫卡 0.8.3-快照的最新开发版本上:

➜  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_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

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

  1. 从卡夫卡经纪人机器上删除主题文件夹。
  2. 登录动物园管理员

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

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

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

话题结束了... 多亏了 Jacek Laskowski

你可以的。

Sudo./ zookeeper-shell.sh 本地主机: 2181 rmr/经纪人/主题/your _ subject

我面临着同样的问题,花了几天时间试图认同这个问题。我触发了删除主题的命令,但是主题被标记为删除,但是它们没有被删除。

  1. 我首先检查了设置正确的配置

    对于所有代理,dete.topic.able = true

  2. 我重新启动代理来检查主题是否被删除(不! !)。
  3. 我没有检查/卡夫卡/数据文件夹下的数据。
  4. 我甚至考虑过等到保留时间超过时再做决定。

没用,我终于登录了 Zooker

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

请记住在这之后重新启动卡夫卡。 希望这能解决你的问题。

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

对于卡夫卡版本 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

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

一旦标记,删除将在卡夫卡节点上触发,该节点是主题分区的引导者。要记住的是,必须正确配置主题分区引导程序(根据侦听器) ,否则它将无法接收删除日志的指令。

在我纠正服务器属性并重新启动相应的节点之前,我的“标记为删除”主题一直处于这种状态。

检查饲养员的话题状态

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

Server.properties中设置 启用 = 真不能很好地工作。

解决方案: 检查 zookeeper.properties 文件中的 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

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

检查一下 log.segment.delete.delay.ms。

文件上说:

File.delete.delay.ms : 在删除文件之前等待的时间 Filessystem 默认值为60000 ms。

如果上面的方法都不管用,你可以试试下面的方法:

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>

2021/22-rMR 已弃用,请使用 delete teall

1. 登录动物园管理员:

Linux

转到 垃圾箱文件夹:

.\zookeeper-shell.sh localhost:2181

窗户

转到 垃圾箱窗户文件夹:

.\zookeeper-shell.bat localhost:2181

2. 删除主题

deleteall /brokers/topics/NameOfTopicToDelete

不用再跑了: Delete teall/admin/delete _ questions/NameOfTopicToDelete

重新启动动物园管理员和卡夫卡。如果你现在尝试删除主题,你会得到:

节点不存在错误。