Java 无法在Apache Kafka中启动Zookeeper服务器

Java 无法在Apache Kafka中启动Zookeeper服务器,java,apache-kafka,apache-zookeeper,Java,Apache Kafka,Apache Zookeeper,我在卡夫卡之家/bin/windows(如建议的那样)。 然后我遇到了同样的问题,它建议从卡夫卡的家里启动这个程序。 从windows文件夹启动时出现此错误: INFO Reading configuration from: config/zookeeper.properties (org.apache.zookeeper.server.quorum.QuorumPeerConfig) [2014-08-21 11:53:55,748] FATAL Invalid config, exiting

我在卡夫卡之家/bin/windows(如建议的那样)。 然后我遇到了同样的问题,它建议从卡夫卡的家里启动这个程序。 从windows文件夹启动时出现此错误:

INFO Reading configuration from: config/zookeeper.properties (org.apache.zookeeper.server.quorum.QuorumPeerConfig)
[2014-08-21 11:53:55,748] FATAL Invalid config, exiting abnormally (org.apache.zookeeper.server.quorum.QuorumPeerMain)
org.apache.zookeeper.server.quorum.QuorumPeerConfig$ConfigException: Error processing config/zookeeper.properties
    at org.apache.zookeeper.server.quorum.QuorumPeerConfig.parse(QuorumPeerConfig.java:110)
    at org.apache.zookeeper.server.quorum.QuorumPeerMain.initializeAndRun(QuorumPeerMain.java:99)
    at org.apache.zookeeper.server.quorum.QuorumPeerMain.main(QuorumPeerMain.java:76)
Caused by: java.lang.IllegalArgumentException: config/zookeeper.properties file is missing
    at org.apache.zookeeper.server.quorum.QuorumPeerConfig.parse(QuorumPeerConfig.java:94)
    ... 2 more
Invalid config, exiting abnormally

有人知道如何解决这个问题吗?

配置文件的默认位置由一个相对路径指定,
config/zookeeper.properties

卡夫卡的目录树有点像这样:

bin/
  |
  +-- zookeeper-server-start.sh
  |
  +-- windows/
        |
        +-- zookeeper-server-start.bat
config/
  |
  +-- zookeeper.properties
因此,如果您确实在
bin/windows/
目录中,然后从那里运行
zookeer server start.bat
,ZK启动脚本将有效地在
bin/windows/config/zookeer.properties
中查找其配置,而该配置不存在

查看现有的answer()以获得启动ZK启动脚本的正确命令,其中示例命令行明确定义了在何处查找配置文件:

$ cd bin/windows
$ zookeeper-server-start.bat ../../config/zookeeper.properties

# The below will NOT work (explanation is above)
$ cd bin/windows
$ zookeeper-server-start.bat

这里的问题是没有正确测试windows bat脚本。 文档中也没有提到安装scala、java和设置zookeer和Kafka所依赖的环境变量等先决条件

下面是我解决问题的方法,然后zookeeper,kafka服务器已经正常启动,运行良好。 1.安装scala并设置环境变量scala_HOME、scala_VERSION、scala_BINARY_VERSION。将SCALA\u HOME\bin添加到路径。 2.安装java并设置java_HOME,并将java_HOME\bin添加到路径。 3.通过以下方式更正文件\bin\windows\zookeeper-server-start.bat和\bin\windows\kafka-run-class.bat 将字符串%dp0中的所有条目替换为%CD% 4.CD并运行命令启动ZOOKEER:bin\windows\ZOOKEER-server-START.bat config\ZOOKEER.properties 例如->D:\apps\kafka_2.12-0.11.0.1>bin\windows\zookeer-server-start.bat config\zookeer.properties 动物园管理员应该正确启动 5 CD并运行命令启动KAFKA服务器:bin\windows\KAFKA-SERVER-START.bat config\SERVER.properties 例如->D:\apps\kafka_2.12-0.11.0.1>bin\windows\kafka-server-start.bat config\server.properties kafka服务器/代理应正确启动 6.然后,我们可以测试创建一个主题,并列出卡夫卡快速入门指南中提到的主题:


我发现@MiChael G Noll的答案非常有用。关于windows,我建议如下:

通过[记住导航到kafka目录的根目录。windows中根目录的内容是bin、config、libs、logs等]:

通过
\bin\windows\kafka-Server-Start.bat.\config\Server.properties启动kafka服务器

在执行所有这些操作时,请注意,对于windows,我们导航到了
.bin\windows
,在那里我们调用了相应的
.bat
文件

同样,当您想要创建主题或分区时,请记住,在
cmd
终端中,您正在从正确的位置调用这些
.bat
文件[当根目录为kafka目录时,因此使用
\bin
点表示根目录,在该根目录中存储kafka]

其他相关链接和命令可在此处找到:

我还想为像我这样的初学者指出Linux和windows执行之间的相似之处

在Linux中,要将消息写入控制台,请调用:kafka console producer.sh,如下所示:
.sh
是Linux中shell执行的扩展

bin/kafka-console-producer.sh--代理列表localhost:9092--主题测试

它在windows中是并行的,可以通过
.bat
扩展来观察,该扩展是windows控制台[cmd]上的可执行脚本:kafka console producer.sh

\bin\windows\kafka-console-producer.bat--代理列表localhost:9092--主题测试


还要注意
.bat
.sh
在卡夫卡中的位置。在windows中,它位于
bin\windows
,而在Linux中,它直接位于kafka目录的
bin
下。一定要打电话

跟踪显示配置文件丢失确保配置文件位于正确的目录位置,它位于kafka_home/Config/中。在ApacheKafka网站的快速入门指南的第一行中仍然有错误,它清楚地写道,对于Windows用户,您必须在根文件夹中,然后执行bin\Windows\。。。还有其余的命令。无论如何,谢谢。是的,但是在你上面的问题中,你明确地说你做了一些不同的事情:你不在根文件夹中,然后执行了
bin\windows\zookeer server start.bat
(这会起作用),但是你在错误的目录中:“我在
kafka_home/bin/windows
”。我知道,我的评论是为了澄清我的错误。
D:\apps\kafka_2.12-0.11.0.1>bin\windows\kafka-topics.bat --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic test2
Created topic "test2".

D:\apps\kafka_2.12-0.11.0.1>bin\windows\kafka-topics.bat --list --zookeeper localhost:2181
test
test2
.\bin\windows\zookeeper-server-start.bat .\config\zookeeper.properties