我用的是Kafka0.10.0.1。群集中有3个代理。我发出了delete命令,删除了近10个一个月以来都没用过的主题。我查过了,没有消费者注册这些主题,他们的日志大小也没有增加。不过,已经5个多小时了,这些主题还没有被删除。它们只是被标记为删除。原因是什么?
piwo6bdm1#
默认为0.10, delete.topic.enable 是 false . 要删除主题,需要将其设置为 true 在代理属性文件中。请注意,从1.0.0开始,现在默认情况下已启用。
delete.topic.enable
false
true
wgx48brx2#
延伸到米克尔的答案在kafka 0.10中,delete.topic.enable的默认值为false。使用命令行工具删除主题时,zookeeper节点请求创建删除。在正常情况下,集群会立即执行此操作。但是,命令行工具无法知道集群中是否启用了主题删除。因此,它将请求删除主题,而不管删除是否被禁用,这可能会导致意外的结果。通过在/admin/delete\u topic下创建zookeeper节点作为子节点来请求删除主题,该子节点用主题名称命名。一个新线程将调用并检查是否启用了主题删除。如果启用,它将删除zookeeper中的所有日志和路径如果未启用删除,则必须手动删除主题的所有配置手动删除主题的步骤:关闭群集中的所有代理从kafka集群路径中删除zookeeper路径/brokers/topics/topicname。请注意,此节点具有必须首先删除的子节点。从每个代理的日志目录中删除分区目录。这些将被命名为topicname num,其中num是分区id。重新启动所有代理
2条答案
按热度按时间piwo6bdm1#
默认为0.10,
delete.topic.enable
是false
. 要删除主题,需要将其设置为true
在代理属性文件中。请注意,从1.0.0开始,现在默认情况下已启用。
wgx48brx2#
延伸到米克尔的答案
在kafka 0.10中,delete.topic.enable的默认值为false。
使用命令行工具删除主题时,zookeeper节点请求创建删除。在正常情况下,集群会立即执行此操作。但是,命令行工具无法知道集群中是否启用了主题删除。因此,它将请求删除主题,而不管删除是否被禁用,这可能会导致意外的结果。
通过在/admin/delete\u topic下创建zookeeper节点作为子节点来请求删除主题,该子节点用主题名称命名。一个新线程将调用并检查是否启用了主题删除。如果启用,它将删除zookeeper中的所有日志和路径
如果未启用删除,则必须手动删除主题的所有配置
手动删除主题的步骤:
关闭群集中的所有代理
从kafka集群路径中删除zookeeper路径/brokers/topics/topicname。请注意,此节点具有必须首先删除的子节点。
从每个代理的日志目录中删除分区目录。这些将被命名为topicname num,其中num是分区id。
重新启动所有代理