优秀的编程知识分享平台

网站首页 > 技术文章 正文

刚接触kafka时,对于创建topic命令一窍不懂

nanyue 2024-12-12 14:08:49 技术文章 7 ℃

刚接触kafka时,对于kafka创建topic命令甚是疑惑,有的资料创建topic命令中有的用的是bootstrap.server 有的用的是zookeeper 。也没有说是什么原因,k刚开始搞不懂zookeeper 和bootstrap.server 有什么不同。其实很简单,只是kafka不同版本使用方式不同而已。


这里对于kafka版本用新旧来区分。

旧版本(< v2.2)Kafka的参数

kafka-topics.sh --zookeeper node1:2181,node2:2181,node3:2181 --create --topic topic_name

新版本(>= v2.2)Kafka的参数

kafka-topics.sh --bootstrap-server node1:9092 --create --topic topic_name



其中,2181是zookeeper 的监听端口,9092是kafka的监听端口。


旧版本用--zookeeper参数,主机名(或主机IP)和端口用ZooKeeper的,就是server.properties文件中zookeeper.connect属性的配置值


新版本用--bootstrap-server参数,主机名(或主机IP)和端口用某个节点的即可,即主机名(或主机IP)9092。


查看kafka版本


kafka并没有直接提供查看version的命令。但也没关系,我们可以通过进入kafka/libs文件夹,libs下的文件名称中就包含kafka版本信息,蓝色中的2.2.1就是我们安装的kafka的版本。




除了这种方式可以查看kafka版本外,我们还可以通过下面这种方式查看,

进入kafka目录,执行下面这个命令。

find ./libs/ -name \*kafka_\* | head -1 | grep -o '\kafka[^\n]*' 




其中2.2.1就是我们要找的kafka版本。


认真踏实的你,相信你对前面的2.11是什么很好奇。2.11是Scala版本,2.2.1是Kafka版本。


创建topic命令


知道kafka版本号后,按照前面提供的创建命令,我们对号入座。


./kafka-topics.sh --create --topic  topic_name --replication-factor 3 --partitions 3 --bootstrap-server node1:9092,node2:9092,node3:9092


  • -topic 指定topic
  • -partitions指定分区数


需要注意的是分区数越多,在一定程度上会提高消息处理的吞吐量,因为kafka是基于文件进行读写,因此也需要打开更多的文件句柄,也会增加一定的性能开销。


但分区数也不宜过得,如果分区数过多,日志分段也会因此多很多,写的时候对I/O对性能影响很大。


–replication-factor


用来设置主题的副本数。


每个主题可以有多个副本,副本位于集群中不同的broker上,也可以说副本的数量不能超过broker的数量。


查看topic命令


想确认下topic创建是否成功,我们可以查看topic列表,看看刚才创建的topic是否在这个列表中,有的话就表示创建成功了。


./kafka-topics.sh --bootstrap-server node1:9092,node2:9092,node3:9092 --list


也可以通过查看topic内容来确认。



./kafka-console-consumer.sh --bootstrap-server node1:9092,node2:9092,node3:9092 --topic topic_name


删除topic命令


跟mysql数据库一样,topic可以创建,理所当然可以删除。

./kafka-topics.sh --delete --bootstrap-server node1:9092,node2:9092,node3:9092  --topic topic_name

查看消费组消费进度


./kafka-consumer-groups.sh --describe --bootstrap-server node1:9092,node2:9092,node3:9092 --group consumer_group_name

重置消费组位移


./kafka-consumer-groups.sh --bootstrap-server node1:9092,node2:9092,node3:9092 --group consumer_group_name  --all-topics --execute --reset-offsets --to-datetime 2022-08-07T16:00:00.000


需要注意的是时区问题。


由于笔者水平有限,文中纰漏之处在所难免,欢迎批评指正。

最近发表
标签列表