下载地址
http://kafka.apache.org/downloads
解压并启动
下载后,解压放在D:\kafka目录下。
找到文件"D:\kafka\kafka_2.11-2.2.0\config\server.properties"
修改此处log.dirs=D:\kafka\kafka_2.11-2.2.0\kafka-logs
启动kafka
启动时要记得先启动zookeper
zookeper安装启动过程详见
https://blog.csdn.net/han_xiaoxue/article/details/86747509
在D:\kafka\kafka_2.11-2.2.0 地址栏输入cmd 进入黑框,敲命令启动
.\bin\windows\kafka-server-start.bat .\config\server.properties
启动时可能遇到的错误
1.count not reserve enough space for 1048576KB object heap
解决办法 找到D:\kafka\kafka_2.11-2.2.0\bin\windows下kafka-server-start.bat文件
将原来的1G 修改为512 或者合适自己的大小
创建topic
进入D:\kafka\kafka_2.11-2.2.0\bin\windows目录下 打开控制台
kafka-topics.bat --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic test001
查看topic
kafka-topics.bat --list --zookeeper localhost:2181
启动生产者
kafka-console-producer.bat --broker-list localhost:9092 --topic my-replicated-topic
消费者报错zookeeper is not a recognized option
错误方法
kafka-console-consumer.bat --zookeeper localhost:2181 --from-beginning --topic my-replicated-topic
正确方法
kafka-console-consumer.bat --bootstrap-server localhost:9092 --topic my-replicated-topic --from-beginning
如果用错误方法启动会报错zookeeper is not a recognized option 其实是因为第一种命令已经过期了,0.90版本之后启动消费者的方法更换为第二个命令。
启动消费者后报错
更改成了正确的启动消费者命令后,发现还是报错,生产者消费者不停的报警告
[2020-01-13 15:30:43,838] WARN [Consumer clientId=consumer-1, groupId=console-co
nsumer-46968] Connection to node 0 (localhost/127.0.0.1:9092) could not be estab
lished. Broker may not be available. (org.apache.kafka.clients.NetworkClient)
[2020-01-13 15:30:44,991] WARN [Consumer clientId=consumer-1, groupId=console-co
nsumer-46968] Connection to node 0 (localhost/127.0.0.1:9092) could not be estab
lished. Broker may not be available. (org.apache.kafka.clients.NetworkClient)
并且日志文件当中生成了50个__consumer_offsets-3。。。。。。。
解决办法
__consumer_offsets这个topic是由kafka自动创建的,默认50个,但是都存在一台kafka服务器上,这就存在很明显的单点故障。如果我们没有在server.properties文件中指定topic分区的副本数的话,它的默认值就是1。
__consumer_offsets是一个非常重要的topic,不允许它只有一个副本,这样就存在单点故障,也就是如果该分区所在的集群宕机了的话,我们的消费者就无法正常消费数据了。
第一步:把刚才自动创建的__consumer_offsets 删除
安装一个zookeper的可视化客户端比较方便删除,把这两个删除
第二步 启动三个kafka
复制kafka文件夹,复制两个出来 变成了三个
修改第二个和第三个kafka的配置文件
“D:\kafka\kafka_2.11-2.2.0-2\config\server.properties”
“D:\kafka\kafka_2.11-2.2.0-3\config\server.properties”在这里插入代码片
修改文件中的broker.id,以及port属性,确保唯一性
将num.partitions=3和log.dirs 日志放在不同的文件夹下
一共修改这四个属性
分别启动三个kafka 启动步骤同上
在D:\kafka\kafka_2.11-2.2.0-2 地址栏输入cmd 进入黑框,敲命令启动
在D:\kafka\kafka_2.11-2.2.0-3 地址栏输入cmd 进入黑框,敲命令启动
在D:\kafka\kafka_2.11-2.2.0-地址栏输入cmd 进入黑框,敲命令启动
.\bin\windows\kafka-server-start.bat .\config\server.properties
都启动之后 创建一个topic
kafka-topics.bat --create --zookeeper localhost:2181 --replication-factor 3 --partitions 1 --topic my-replicated-topic
查看这个topic
kafka-topics.bat --describe --zookeeper localhost:2181 --topic my-replicated-topic
从上面的内容可以看出,该topic包含1个part,replicationfactor为3,且节点1 是leader
启动一个生产者
kafka-console-producer.bat --broker-list localhost:9092 --topic my-replicated-topic
启动生产者
kafka-console-consumer.bat --bootstrap-server localhost:9092 --topic my-replicated-topic --from-beginning
发送消息即可收到数据