kafka入门-命令的操作(基于命令行的方式)

写在前面

1,本篇博客的环境为Windows
2,命令行工具为Cmder,有关Cmder安装可以参考
Cmder的安装以及配置
3,主机要有JDK环境

执行命令操作前的准备

1,安装Zookeeper,Zookeeper的安装以及启动可以参考Zookeeper的入门-安装&配置
2,kafka的安装参考Kafka入门-Kafka安装(Windows环境)
3,Kafka服务器集群的数量为3,为了方便,自己将解压后的Kafka的文件夹复制了三份,并且对其进行了重命名操作,如下图所示:
kafka入门-命令的操作(基于命令行的方式)
此时需要修改每个集群节点中的server.properties文件。举kafka_1例子来说,进入到config文件夹下,编辑server.properties文件,编辑的结果如下图所示(主要修改三个地方):
kafka入门-命令的操作(基于命令行的方式)
kafka入门-命令的操作(基于命令行的方式)
21行那里的含义是用唯一的一个整数去标记kafka集群中的每一个节点,必须是唯一的。31行那里表示的是节点服务器的端口号,由于这三个kafka节点都是在一台电脑上,因此端口号也要是唯一的(如果集群中的节点部署到多台主机上,那么这个地方就不用修改,使用默认的9092端口号就行)。60行那里表示的是kafka保存节点中消息数据的位置。

同理,对于kafka_2文件夹中config的server.properties修改如下图所示:

kafka入门-命令的操作(基于命令行的方式)
kafka入门-命令的操作(基于命令行的方式)

kafka_3文件中config下的server.properties文件修改如下图所示:

kafka入门-命令的操作(基于命令行的方式)
kafka入门-命令的操作(基于命令行的方式)

相关服务器的启动

1,启动Zookeeper,进入到Zookeeper的bin目录下,然后输入zkServer.cmd启动Zookeeper。
2,首先将集群中的三台kafka服务器启动起来。例如kafka_1:进入到\bin\windows目录下,然后执行:kafka-server-start.bat ..\..\config\server.properties命令。同理,对于kafka_2节点和kafka_3节点的操作同kafka_1。
3,当三个集群中三个节点启动起来之后,可以通过Zookeeper的客户端查看集群中的topic信息。启动Zookeeper客户端需要进入到bin目录中,然后输入zkCli.cmd启动客户端,然后通过ls的命令查看topic的信息。如下图所示:
kafka入门-命令的操作(基于命令行的方式)
由于当前没有去建立topic的信息所以查看topic的信息的时候是空值。
也可以使用kafka-topics.bat --zookeeper localhost:2181 --list去查看。

topic的操作

topic的好处是将kafka集群中的信息进行分类,对于消费者而言,需要消费什么样的消息,那么就去对应的主题中取就行了。

关于主题的增,删,改,查操作基本上通过kafka-topics.bat去操作的,一般操作中我们不会去执行修改的操作。

创建主题:

kafka-topics.bat --zookeeper localhost:2181 --create --replication-factor 3 --partitions 2 --topic first
这里主要解释一下–replication-factor 3 和 --partitions 2的含义:

–replication-factor 3 表示的意思是给主题first的副本数为3

–partition 2的意思是将主题first中又分为两个分区,分区的好处是为了避免给kafka集群中的节点服务器造成过大的压力,比如说没有分区的时候,一个主题位于一个服务器上面,如果该主题中的消息数量过大的话,那么会增加服务器的压力,通过分区的这种方式将同一个topic可以分配到不同的服务器当中,来去缓解服务器端的压力。

通过上面的命令我们就可以创建一个名为first的主题,那么我们如果去查看这个主题的详情呢,可以通过:kafka-topics.bat --zookeeper localhost:2181 --describe --topic first去查看我们创建的主题,如下图所示:
kafka入门-命令的操作(基于命令行的方式)
说明:红框1中的0,1表示的是分区的编号,红框2中的0,1,2表示的是server.properties中的broker.id的值,即用来标记节点的变量。
上面的结果可能太过于抽象,我将其画了出来,如下图所示:
kafka入门-命令的操作(基于命令行的方式)

查看主题列表

kafka-topics.bat --zookeeper localhost:2181 --list

运行结果如下图所示:

kafka入门-命令的操作(基于命令行的方式)

删除主题