一、介绍
- kafka启动时需要加载一个用于KafkaServer初始化相关配置的server.properties文件,当然文件名可以任意,一个server.properties对应一个KafkaServer实例,Kafka伪分布式就是在一台机器上启动多个KafkaServer来达到多代理的效果,因此需要保证broker.id以及port在同一台机器上启动多个server.properties中唯一。
二、server.properties配置
- 重新copy一份或多份...\conf\server.properties命名为server-1.properties、server-2.properties...
- 由于默认端口是9092,而server.properties没有设置端口,则采用的是默认端口。因此此处我将server-1.properties端口设置为9093,这个端口可以自定义,只要木有被占用即可。
- 分别将broker.id设为new id,log.dirs设为new 路径。
server.properties
broker.id=0
port=9092
log.dir=/tmp/kafka-logs-0
host.name=cent
zookeeper.connect=cent:2181
server-1.properties
broker.id=1
port=9093
log.dir=/tmp/kafka-logs-1
host.name=cent
zookeeper.connect=cent:2181
server-2.properties
broker.id=2
port=9094
log.dir=/tmp/kafka-logs-2
host.name=cent
zookeeper.connect=cent:2181
三、分别启动broker.id为0、1、2的三个KafkaServer:
-
要先启动zookeeper
- 进入bin
cd D:\zookeeper-3\zookeeper-3.5.3-beta\bin
- 执行
zkServer.cmd
- 进入bin
然后启动三个代理broker
.\bin\windows\kafka-server-start.bat .\config\server.properties
.\bin\windows\kafka-server-start.bat .\config\server-1.properties
.\bin\windows\kafka-server-start.bat .\config\server-2.properties
- 再次执行jps命令查看Java进程消息,打印输出如下消息
18692 Kafka
26164 QuorumPeerMain
6996 Kafka
21192 Kafka
15500 Jps
四、测试
-
创建一个拥有3个副本的topic:
-
打开cmd
cd D:\kafka_2.11-1.1.0\kafka_2\kafka_2.11-1.1.0\bin\windows
-
创建topic:
kafka-topics.bat --create --zookeeper localhost:2181 --replication-factor 3 --partitions 1 --topic my-replicated-topic
-
-
如图
-
查看每个节点信息
- 打开cmd
cd D:\kafka_2.11-1.1.0\kafka_2\kafka_2.11-1.1.0\bin\windows
- 查看节点:
kafka-topics.bat --describe --zookeeper localhost:2181 --topic my-replicated-topic个拥有3个副本的topic:
- 打开cmd
-
生产消息
- 打开cmd
cd D:\kafka_2.11-1.1.0\kafka_2\kafka_2.11-1.1.0\bin\windows
- producer:
kafka-console-producer.bat --broker-list localhost:9092 --topic my-replicated-topic
- 打开cmd
-
消费消息
- 打开cmd
cd D:\kafka_2.11-1.1.0\kafka_2\kafka_2.11-1.1.0\bin\windows
- consumer:
kafka-console-consumer.bat –zookeeper localhost:2181 –from-beginning –topic my-replicated-topic
- 打开cmd