集群kafka2.2及以上版本,常用topic操作命令

309 阅读1分钟

本文适用于kafka2.2及以上版本

准备工作

获取到部署的kafka信息

在k8s中的一个node节点上,执行kubectl查看到kafka的访问ip和端口:kubectl get svc -n ${部署kafka的命名空间名} image.png 图中第一行 kafka ClusterI后的ip和端口就是【集群访问ip端口】,也是--bootstrap-server的参数

找到可执行kafka命令的资源

进入部署kafka集群的一个node机器,进入kafka pod,找到kafka-topics.sh,执行find / -name kafka-topics.sh

查询

topic 列表

./kafka-topics.sh --bootstrap-server localhost:9092 --list

topic 详情

#查看特定topic的详细信息
./kafka-topics.sh --bootstrap-server localhost:9092 --describe --topic <topic-name>
#查看所有topic的详细信息
./kafka-topics.sh --bootstrap-server localhost:9092 --describe

增删改

创建topic

./kafka-topics.sh --bootstrap-server localhost:9092 --create --topic <topic-name> --partitions <num-partitions> --replication-factor <replication-factor>

其中,<topic-name>是要创建的topic的名称,<num-partitions>是要为该topic创建的分区数,<replication-factor>是要为该topic设置的副本数

删除topic

./kafka-topics.sh --bootstrap-server localhost:9092 --delete --topic <topic-name>

修改topic分区

./kafka-topics.sh --bootstrap-server localhost:9092 --alter --topic <topic-name> --partitions <num-partitions>

其中,<num-partitions>不能小于原topic的的分区数,也就是只能往大了改。若小于原分区数会修改失败并报错:InvalidPartitionsException: Topic currently has 10 partitions, which is higher than the requested 5.

常见问题

使用命令报错:Error: Exception thrown by the agent : java.rmi.server.ExportException: Port already in use: 5555; nested exception is: java.net.BindException: Address already in use (Bind failed) sun.management.AgentConfigurationError: java.rmi.server.ExportException: Port already in use: 5555; nested exception is: java.net.BindException: Address already in use (Bind failed)

解决办法:执行export JMX_PORT=5557,更换为其他端口

其他参考:# Kafka中bootstrap-server、broker-list和zookeeper的区别