Kafka常用命令之:kafka-topics
概述
kafka的命令主要安装在kafka的安装目录下的bin路径下,其中kafka-topics.sh主要包括对Topic的一些操作命令;可以使用 “–help”参数查看命令详细信息。
查看详细帮助信息:
在进入kafka安装目录后执行如下命令bin/kafka-topics.sh --help
执行结果:从结果可以看到kafka-topics.sh命令主要支持: –list, --describe, --create, --alter or --delete 五种操作
1. 创建Topic: --create
bin/kafka-topics.sh --create --zookeeper:2181 --topic topic_test_002 --partitions 10 --replication-factor 3
参数说明
- –create :表示创建操作;
- –zookeeper: 指定kafka配置的Zookeeper集群,这里是zk-node01:2181,指定任意一个节点+端口;(hostName:port 或者 ip:port均可,也可以指定多个节点)
- –topic: 指定topic的名字,这里是创建名为 topic_test_002的topic
- –partitions:指定topic的分区数量,也就是put到这个topic的数据会分到10个分区中;
- –replication-factor:指定副本数量,这里设置3,也就是这个topic的数据数据会存储3个副本中;
(下面在执行describe会详细介绍)
执行结果
在执行时遇到一个警告,在这里选择忽略;
警告:
Due to limitations in metric names, topics with a period (’.’) or underscore (’_’) could collide. To avoid issues it is best to use either, but not both.
翻译:
由于度量名称的限制,带有句点(’.’)或下划线(’_’)的主题可能会发生冲突。为了避免问题,最好使用其中之一,但不是两者都使用。
2. 查看Topic详细信息: --describe
bin/kafka-topics.sh --describe --zookeeper datalake-master:2181 --topic topic_test_002
参数说明
- –describe:表示查看topic详细信息操作
- –zookeeper: 指定kafka配置的Zookeeper集群
- –topic: 指定要查看的topic的名字
执行结果:
可以看出“topic_test_002”共有10个分区(partition 0 ~ 9);均匀分布在5个Broker上(1~5);并且副本均匀分布在不同的Broker上;如:分区:Partition 0,leader是Broker 5,副本分布在 Broker,5,4,1上;
3. 查看Topic列表: --list
bin/kafka-topics.sh --list --zookeeper datalake-master:2181
参数说明
- –list:表示要执行的操作是查看全部topic列表
- –zookeeper: 指定kafka配置的Zookeeper集群
4.修改Topic: --alter
将partition数量从10改为20
bin/kafka-topics.sh --alter --zookeeper zk-node01:2181 --topic topic_test_002 --partitions 20
执行结果:
再次使用describe查看topic详情:发现变成了20个Partition
注意:
alter 可以修改Partition数量,但是只能从小往大改,不能从大往小改!
5.删除Topic: --delete
bin/kafka-topics.sh --delete --zookeeper zk-node01:2181 --topic topic_test_002
执行结果
注意:执行delete并不能真正删除topic,只是将其标记为删除!
执行List命令后发现,这个topic也仅仅是被标记为删除:
如果想要真正的删除还需要在Zookeeper中删除元数据信息,具体操作如下:
-
启动Zookeeper客户端
bin/zkCli.sh
-
找到topic所在目录
ls /brokers/topics
-
删除对应的topic
rmr /brokers/topics/topic_test_002
再次执行list,发现topic_test_002已经不再列表中;