目录
kafka-topics.sh工具:查看/删除/修改/创建主题
创建主题:
创建一个叫 topicName并且有三个分区,每个分区有三个副本的副本
./kafka-topics.sh --zookeeper zkip:2181 --create --topic topicName
--replication-factor 3 --partitions 3
–zookeeper 指定zk连接地址(kafka主题以及分区信息保存在zk)
–create 创建 (–delete 删除)
–replication-factor 后面跟一个数字代表每个分区创建多少个副本
–patitions 指定多少个分区
创建主题时修改默认配置
./kafka-topics.sh --zookeeper zkip:2181 --create --topic topicName
--replication-factor 3 --partitions 3
--config message.timestamp.type=LogAppendTime
–config后跟需要覆盖默认配置的参数以及值
增加分区
将topicName主题的分区更改为5个
./kafka-topics.sh --zookeeper zkip:2181 --alter --topic topicName --partitions 5
删除主题
首先确保delete.topic.enable 配置是true
./kafka-topics.sh --zookeeper zkip:2181 --delete --topic topicName
如果kafaka启动时加载的配置文件中server.properties没有配置"delete.topic.enable=true",那么此时的删除并不是真正的删除,而是把topic标记为删除:marked for deletion。或者直接从Zookeeper中删除。
彻底删除topic方式
1、删除kafka存储目录(server.properties文件log.dirs配置,默认为"/tmp/kafka-logs")相关topic目录
2、如果配置了delete.topic.enable=true直接通过命令删除,如果命令删除不掉,直接通过zookeeper-client 删除掉broker下的topic即可。
从Zookeeper中删除
(1)登录zookeeper客户端:命令:./bin/zookeeper-client
(2)找到topic所在的目录:ls /brokers/topics
(3)找到要删除的topic,执行命令:rmr /brokers/topics/topicName即可,此时topic被彻底删除。
查看主题
查看当前kafka所有主题的名称
./kafka-topics.sh --zookeeper zkip:2181 --list
列出主题的详细信息,如果不加 --topic 将会列出所有主题的详细信息
./kafka-topics.sh --zookeeper zkip:2181 --describe --topic topicName
- –topic-with-overrides 列出有所有与集群默认配置不一样的主题
./kafka-topics.sh --zookeeper zkip:2181 --describe --topics-with-overrides
- –under-replicated-partitions 列出所有包含不同步副本的分区
./kafka-topics.sh --zookeeper zkip:2181 --describe --under-replicated-partitions
- –unavailable-partitions 列出所有没有leader的分区(分区已经不可用了)
./kafka-topics.sh --zookeeper zkip:2181 --describe --unavailable-partitions