Windows环境下安装调试Kafka + ZooKeeper以及报错记录

最近在学习用Jmeter对Kafka进行压测,所以安装Kafka软件肯定必不可少了。在安装调试的过程中也有遇到一些问题,在此记录一下。

下载

我下载的是ZooKeeper 3.5.7和最新的Kafka 2.13-2.4.1

安装

ZooKeeper

1.解压ZooKeeper压缩包并放在系统盘的某个位置,我这里是放在D盘的根目录下;

2.新增一个系统变量“ZOOKEEPER_HOME”,如下图所示:

3.进入ZooKeeper的conf文件夹,找到zoo_sample.cfg文件,重命名为zoo.cfg;

4.用文本编辑器打开zoo.cfg文件,找到dataDir并编辑它的值,我这里是改成:dataDir=D:/apache-zookeeper-3.5.7/data;

Kafka

1.解压Kafka压缩包并放在系统盘的某个位置,我这里是放在D盘的根目录下;

2.进入D:\kafka_2.13-2.4.1\config,找到server.properties文件并用文本编辑器打开;

3.找到log.dirs并编辑它的值,我这里是改成:log.dirs=./logs;

4.找到zookeeper.properties文件并用文本编辑器打开,找到dataDir并编辑它的值,我这里是改成:dataDir=D:/apache-zookeeper-3.5.7/data

注:zoo.cfg文件和zookeeper.properties文件中的dataDir要一致,否则删除主题后会出问题。

调试

1.启动ZooKeeper:cmd打开运行,输入并执行zkserver,如下图所示,表示启动成功:

注:不要关闭这个ZooKeeper的cmd

2.启动Kafka

(1)cmd打开运行,进入kafka文件目录:cd D:\kafka_2.13-2.4.1

(2)输入并执行:  .\bin\windows\kafka-server-start.bat .\config\server.properties,如下图所示表示启动成功:

注:不要关闭这个Kafka的cmd

3.创建一个名为“TestTopic”的主题

(1)cmd打开运行,进入Kafka的window目录:cd D:\kafka_2.13-2.4.1\bin\windows
(2)输入并执行:kafka-topics.bat --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic TestTopic,如下图所示表示创建成功:

4.创建一个生产者Producer

(1)cmd打开运行,进入Kafka的window目录:cd D:\kafka_2.13-2.4.1\bin\windows
(2)输入并执行:kafka-console-producer.bat --broker-list localhost:9092 --topic TestTopic

如果输入一个错误的主题名称会怎样?楼主就犯了,然后就会看到下图所示:

注:Topic名称必须和我们创建过的Topic名称一致

5.创建一个消费者Consumer

(1)cmd打开运行,进入Kafka的window目录:cd D:\kafka_2.13-2.4.1\bin\windows
(2)输入并执行:kafka-console-consumer.bat --bootstrap-server localhost:9092 --topic test --from-beginning

注:Topic名称必须和我们创建过的Topic名称一致

按照上面的步骤,安装软件和单机测试Kafka就算是顺利通过了。

报错记录

1.使用zkserver命令启动ZooKeeper报错:'zkserver' 不是内部或外部命令,也不是可运行的程序或批处理文件。

报错原因:这个报错原因还蛮多的,比如说环境变量配置错了,还有没有装jdk,当然如果环境变量和jdk都没有问题,那我猜可能是异常关闭导致的。

解决方法:检查一下环境变量,命令行输入java -version看看是不是报“java不是内部命令。。。”,最后一个就是,进入zookeeper的bin文件目录,运行zkServer.cmd,具体如下:

cd D:\apache-zookeeper-3.5.7\bin
zkServer.cmd

2.启动ZooKeeper时报错:'wmic' 不是内部或外部命令,也不是可运行的程序或批处理文件

解决方法:先去查看C盘下是不是有“C:\WINDOWS\system32\wbem”这个文件夹,如果有的话,查看环境变量中的系统变量,找到“%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;”,如果没有就添加保存,然后重启ZooKeeper。

3.启动ZooKeeper报错,报错内容如下:

ERROR [main:QuorumPeerMain@89] - Invalid config, exiting abnormally
org.apache.zookeeper.server.quorum.QuorumPeerConfig$ConfigException: Error processing D:\apache-zookeeper-3.5.7\bin\..\conf\zoo.cfg
        at org.apache.zookeeper.server.quorum.QuorumPeerConfig.parse(QuorumPeerConfig.java:156)
        at org.apache.zookeeper.server.quorum.QuorumPeerMain.initializeAndRun(QuorumPeerMain.java:113)
        at org.apache.zookeeper.server.quorum.QuorumPeerMain.main(QuorumPeerMain.java:82)
Caused by: java.lang.IllegalArgumentException: D:\apache-zookeeper-3.5.7\bin\..\conf\zoo.cfg file is missing
        at org.apache.zookeeper.server.util.VerifyingFileFactory.doFailForNonExistingPath(VerifyingFileFactory.java:51)
        at org.apache.zookeeper.server.util.VerifyingFileFactory.validate(VerifyingFileFactory.java:45)
        at org.apache.zookeeper.server.util.VerifyingFileFactory.create(VerifyingFileFactory.java:40)
        at org.apache.zookeeper.server.quorum.QuorumPeerConfig.parse(QuorumPeerConfig.java:141)
        ... 2 more
Invalid config, exiting abnormally

报错原因:非法配置,找不到zoo.cfg文件,这个肯定是因为没有把zoo_sample.cfg重命名为zoo.cfg。

4.启动Kafka报错:kafka.zookeeper.ZooKeeperClientTimeoutException: Timed out waiting for connection while in state: CONNECTING

报错原因:我的ZooKeeper版本和Kafka版本不对应,之前我下载的是ZooKeeper3.6.0版本。

解决办法:下载对应的版本,当然如果大家不知道下载的Kafka具体对应的是哪个版本的ZooKeeper,可以进入Kafka的libs目录下查看对应的zookeeper jar包,如图所示,说明对应要下载3.5.7版本的ZooKeeper:

5.Kafka启动时报错,报错内容如下:

ERROR Fatal error during KafkaServer startup. Prepare to shutdown (kafka.server.KafkaServer)
kafka.common.InconsistentClusterIdException: The Cluster ID 8iDlG8QcQYCDhABZPB7qqQ doesn't match stored clusterId Some(-11r4H8aSLSBuF88Hj7TBQ) in meta.properties. The broker is trying to join the wrong cluster. Configured zookeeper.connect may be wrong.
        at kafka.server.KafkaServer.startup(KafkaServer.scala:220)
        at kafka.server.KafkaServerStartable.startup(KafkaServerStartable.scala:44)
        at kafka.Kafka$.main(Kafka.scala:84)
        at kafka.Kafka.main(Kafka.scala)

解决方法:删除配置文件server.properties中的参数log.dirs路径下的全部文件,重新启动Kafka。

6、启动Kafka时报错:Error occurred during initialization of VM

Could not reserve enough space for 1048576KB object heap

解决方法:在Kafka的windows路径下找到kafka-server-start.bat文件,用编辑器打开它,可以看到如下图所示的一段配置:

IF NOT ERRORLEVEL 1 (
        rem 32-bit OS
        set KAFKA_HEAP_OPTS=-Xmx512M -Xms512M
    ) ELSE (
        rem 64-bit OS
        set KAFKA_HEAP_OPTS=-Xmx1G -Xms1G
    )

因为是64位的电脑,所以把KAFKA_HEAP_OPTS调小了一点,改成512M,即“set KAFKA_HEAP_OPTS=-Xmx512M -Xms512M”,保存之后,重启Kafka。

7.创建消费者报错,错误如下:

WARN [Consumer clientId=consumer-console-consumer-33579-1, groupId=console-consumer-33579] Error while fetching metadata with correlation id 2 : {test=LEADER_NOT_AVAILABLE} (org.apache.kafka.clients.NetworkClient)
Processed a total of 0 messages

这是因为我用了个没创建的Topic,并且创建的生产者的Topic也与它不同。

解决方法:重新创建一个Topic正确的消费者。

8.如果我没有创建某个Topic,而创建的生产者和消费者使用了同一个Topic,居然也可以发送消息,如下图所示:

不知道这是什么原理,如果有大神知道的话麻烦解答一下,感谢~

发布了63 篇原创文章 · 获赞 9 · 访问量 6万+

猜你喜欢

转载自blog.csdn.net/shan286/article/details/105242586