kafka删除topic方式

kafka删除topic方式工作中因为各种原因,topic中消息堆积的太多或者kafka所在磁盘空间满了等。可能需要彻底清理一下kafkatopic。cd/opt/kafka/kafka_2.10-0.10.2.2/bin列出所有topic:./kafka-topics.sh--zookeeperip:2181-list其实就是检查zk上节点的/brokers/topics子节点,打印出来。创建topic...

工作中因为各种原因,topic中消息堆积的太多或者kafka所在磁盘空间满了等。可能需要彻底清理一下kafka topic。
cd /opt/kafka/kafka_2.10-0.10.2.2/bin
列出所有topic:
./kafka-topics.sh --zookeeper ip:2181 -list
其实就是检查zk上节点的/brokers/topics子节点,打印出来。
创建topic
./kafka-topics.sh --zookeeper ip:2181 -create --topic my_topic --partitions 4 --replication-factor 1
线上环境将自动创建topic禁用掉,改为手动创建(auto.create.topics.enable=false),partitions和replication-factor是两个必备选项,
第一个参数是消息并行度的一个重要参数,第二个极大提高了topic的可用性,备份因子默认是1,相当于没有备份,其值不能大于broker个数,
否则会报错。同时还可以指定topic级别的配置参数,这种特定的配置会覆盖掉默认配置,并且存储在zookeeper的/config/topics/[topic_name]节点数据里。
–alter –config –deleteConfig。replication-factor参数用来指定需要多少个副本(连同leader在内),一般比较推荐设置为2或3。如果设置太少(比如1)导致可用性下降,
如果设置太大会影响Kafka的性能。
方式一:
配置delete.topic.enable=true
修改kafaka配置文件server.properties,添加delete.topic.enable=true,重启kafka。之后通过kafka命令行就可以直接删除topic
重启kafka
nohup /usr/kafka/bin/kafka-server-start.sh /usr/kafka/config/server.properties >/dev/null 2>&1 &
通过命令行删除topic:
./kafka-topics.sh --zookeeper ip:2181 --topic my_topic --delete
方式二:
没有配置delete.topic.enable=true
1、通过命令行删除topic:
./kafka-topics.sh --zookeeper ip:2181 --topic my_topic --delete
因为kafaka配置文件中server.properties没有配置delete.topic.enable=true,
此时的删除并不是真正的删除,只是把topic标记为:marked for deletion
2、删除kafka存储目录(server.properties文件log.dirs配置,默认为"/tmp/kafka-logs")相关topic目录。
方式三:
若想真正删除它,需要登录zookeeper客户端:
cd /opt/kafka/zookeeper-3.4.13/bin
chmod 755 ./* (可执行命令)

命令:./bin/zkCli.sh
找到topic所在的目录:ls /brokers/topics
执行命令:rmr /brokers/topics/my_topic即可,此时topic被彻底删除。
另外被标记为marked for deletion的topic你可以在zookeeper客户端中通过命令获得:ls /admin/delete_topics/{topic name},
如果你删除了此处的topic,那么marked for deletion 标记消失。

架构君码字不易,如需转载,请注明出处:https://javajgs.com/archives/212245
0

发表评论