我无法删除Kafka主题,它们只是标记为删除。有什么问题吗?我错过什么了吗?欢迎提出任何建议。
我试图用两种方法删除Kafka的主题:
首先,我运行命令:
kafka-topics.bat --delete --zookeeper localhost:2181 --topic Cat
其次,我尝试了编程
public void deleteSomeTopic() throws Exception {
consumer = new SimpleConsumer(host, port, soTimeout, bufferSize,"deleteClient");
List<String> listTopics = new ArrayList<>();
TopicMetadataRequest request = new TopicMetadataRequest(listTopics);
//consumer will send request and get corresponding response
TopicMetadataResponse response = consumer.send(request);
//getting topicMetadata list
List<TopicMetadata> topicMetadataList = response.topicsMetadata();
for (TopicMetadata topicMetadata: topicMetadataList) {
System.out.println("Do you want to delete this Topic: "+ topicMetadata.topic());
String ch = scanner.next();
if(ch.equalsIgnoreCase("y"))
AdminUtils.deleteTopic(zkClient, topicMetadata.topic());
Thread.sleep(2000);
}
}
两个都成功执行,但当我使用命令列出主题时
kafka-topics.bat --list -zookeeper localhost:2181
它的输出看起来像
Ape - marked for deletion
Cat - marked for deletion
Dog - marked for deletion
Elephant
apple
carrot
ginger - marked for deletion
guava
mango
我的server.properties文件也有
controlled.shutdown.enable=true
delete.topic.enable=true
我使用的是kafka_2.10-0.8.2.2,pom.xml文件只有两个依赖项。
<dependencies>
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-streaming_2.10</artifactId>
<version>1.5.1</version>
</dependency>
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-streaming-kafka_2.10</artifactId>
<version>1.5.1</version>
</dependency>
</dependencies>
我还查了tmp/kafka日志目录,topics目录还在。我需要解决什么问题?
1条答案
按热度按时间bnlyeluc1#
根据list命令的输出,您似乎正确地告诉kafka您要删除一个主题。出于某种原因,Kafka并没有删除它。Kafka版本0.8.2之前有一个bug阻止了主题删除。查看该bug请求的注解,您正在运行的0.8.2.2似乎仍然存在一些问题。所以也许这个错误还没有完全修复?
根据您的kafka.bat文件,您是否在windows环境中运行kafka?您对default server.properties文件做了很多更改吗?或者你基本上是在使用Kafka自带的默认文件?这可能是windows相关的问题,我只在linux上使用过。使用几乎所有的默认值,只有delete.topic.enable=true删除在linux上一直有效。随机猜测,但可能这不是固定的windows环境或在.bat文件?
尽管基于这个堆栈溢出答案和原始bug报告上的注解,似乎存在一个解决方法。我从来没用过,也许试试?