1.创建topic
命令格式:注意空格
./kafka-topics.sh --create --topic topic名称 --partitions 分区数 --replication-factor 备份数 --zookeeper ZooKeeper的任意一个节点或者全部的IP:Port/kafka
示例:
./kafka-topics.sh --zookeeper 192.168.61.102:2181,192.168.61.202:2181,192.168.61.104:2181/kafka
--create --topic testTopic --partitions 10 --replication-factor 2
配合--if-not-exists使用,如果不存在则创建:
./kafka-topics.sh --zookeeper 192.168.61.102:2181,192.168.61.202:2181,192.168.61.104:2181/kafka
--create --topic testTopic --partitions 31 --replication-factor 2 --if-not-exists
2.列出所有topic
命令格式:
./kafka-topics.sh --list --zookeeper ZooKeeper的任意一个节点或者全部的IP:Port/kafka
示例:topic中会存在Kafka默认的topic
./kafka-topics.sh --zookeeper 192.168.61.102:2181,192.168.61.202:2181,192.168.61.104:2181/kafka --list
3.查看topic信息
命令格式:
./kafka-topics.sh --describe --zookeeper ZooKeeper的任意一个节点或者全部的IP:Port/kafka --topic topic名称
示例:
./kafka-topics.sh --describe
--zookeeper 192.168.61.102:2181,192.168.61.202:2181,192.168.61.104:2181/kafka
--topic testTopic
4.修改topic配置信息
命令格式:
./kafka-topics.sh --alter --topic topic名称 --config 配置项=配置值 --zookeeper ZooKeeper的任意一个节点或者全部的IP:Port/kafka
5.增加分区partitions
命令格式:
./kafka-topics.sh --alter --topic topic名称 --zookeeper ZooKeeper的任意一个节点或者全部的IP:Port/kafka --command-config Kafka/kafka/config/client.properties --partitions 扩展后的分区个数
示例:
./kafka-topics.sh --alter --topic testTopic
--zookeeper 192.168.61.102:2181,192.168.61.202:2181,192.168.61.104:2181/kafka
--command-config ./config/client.properties --partitions 10
6.删除topic
命令格式:
./kafka-topics.sh --delete--topic topic名称 --zookeeper ZooKeeper的任意一个节点或者全部的IP:Port/kafka
命令示例:
./kafka-topics.sh --delete --topic testTopic
--zookeeper 192.168.61.102:2181,192.168.61.202:2181,192.168.61.104:2181/kafka
注意
在使用kafka-topics.sh命令删除topic的时候会有两种情况:
- 如果topic没有使用过,那么可以彻底删除该topic
- 如果topic使用过,那么没有真正地删除该topic,只是把该topic标记为删除(marked for deletion)
需要彻底删除使用过得topic,需要删除kafka中与当前topic相关的数据目录和zookeeper与当前topic相关的路径
彻底删除使用过的topic
假设删除的topic名字为testTopic,kafka的zookeeper root为/kafka
(1)删除与该topic相关的数据目录
数据目录需要查看kafka的实际配置路径:
server.properties
log.dirs=/var/kafka/log/tmp
删除命令
rm -rf /var/kafka/log/tmp/testTopic*
(2)删除topic
./kafka-topics.sh --delete --topic testTopic
--zookeeper 192.168.61.102:2181,192.168.61.202:2181,192.168.61.104:2181/kafka
(3)删除zookeeper上的topic相关路径
这个路径也需要查看kafka的实际配置路径:
server.properties
zookeeper.connect=192.168.61.102:2181,192.168.61.202:2181,192.168.61.104:2181/kafka
# 进入到zookeeper的目录
bin/zkCli.sh
rmr /kafka/consumers/testTopic-group
rmr /kafka/config/topics/testTopic
rmr /kafka/brokers/topics/testTopic
rmr /kafka/admin/delete_topics/testTopic
(4)重启zookeeper和kafka,查看topic是否存在
./kafka-topics.sh --zookeeper 192.168.61.102:2181,192.168.61.202:2181,192.168.61.104:2181/kafka --list