kafka的安装及启动消费者报 Connection to node could not be established. Broker may not be vailable

下载地址

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

发送消息即可收到数据

发布了60 篇原创文章 · 获赞 121 · 访问量 10万+

猜你喜欢

转载自blog.csdn.net/han_xiaoxue/article/details/103895977