何时/如何最终删除“标记为删除”的主题?
Posted
技术标签:
【中文标题】何时/如何最终删除“标记为删除”的主题?【英文标题】: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
那是什么意思?该主题什么时候会被真正删除?如何加快此过程?
【问题讨论】:
【参考方案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;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) ✗
关键是在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 的情况下,我必须手动删除以下条目 -
-
从 Kafka 代理机器中删除主题文件夹。
登录 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】:我遇到了同样的问题,并花了几天时间试图找出问题所在。我触发了删除主题的命令,但是主题被标记为删除,但它们没有被删除。
-
我首先检查了设置正确的配置。下:server.properties
我重新启动了代理以检查主题是否被删除(否!!)。 我在 /kafka/data 文件夹下没有检查任何数据。 我什至考虑过等到超过保留时间的选项。delete.topic.enable=true 对于所有代理
没有任何帮助。我终于不得不登录 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/<topic_name>
3. rmr /brokers/topics/<topic_name>
4. rmr /admin/delete_topics/<topic_name>
【讨论】:
【参考方案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。如果您现在尝试删除主题,您将得到:
节点不存在错误。
【讨论】:
以上是关于何时/如何最终删除“标记为删除”的主题?的主要内容,如果未能解决你的问题,请参考以下文章