Windows上搭建Kafka+zookeeper运行环境

时间:2022-12-13 09:21:48

1.前提条件

 1.1 环境需要配置jdk;

 1.2 kafka版本0.8.1.1

2. 安装Zookeeper

Kafka的运行依赖于Zookeeper,所以在运行Kafka之前我们需要安装并运行Zookeeper

2.1 下载安装文件: http://zookeeper.apache.org/releases.html2.2 解压文件(本文解压到 G:\zookeeper-3.4.8)2.3 打开G:\zookeeper-3.4.8\conf,把zoo_sample.cfg重命名成zoo.cfg2.4 从文本编辑器里打开zoo.cfg2.5 把dataDir的值改成“:\zookeeper-3.4.8\data”2.6 添加如下系统变量:
    • ZOOKEEPER_HOME: G:\zookeeper-3.4.8
    • Path: 在现有的值后面添加 ";%ZOOKEEPER_HOME%\bin;"

2.7 运行Zookeeper: 打开cmd然后执行

zkserver 

3. 安装并运行Kafka

服务启动前的命令准备

  • 同样的我们观察bin目录中我们会发现Kafka针对Linux和windows提供了不同的组件。windows的组件放在了windows的文件夹下了。但是我在实际操作中无法使用里面的命令。报一些错误。这里我的解决办法是将windows里的bat全部复制到外面。就是复制到bin目录下。 
    Windows上搭建Kafka+zookeeper运行环境

  • 上图中指出来的bat原本是在windows文件中。拷贝到bin目录之后我们需要修改一下kafka-run-class.bat文件。因为里面写的相对路径和引入的jar会导致出错。所以我们将里面的这段代码

set ivyPath=%USERPROFILE%\.ivy2\cache

set snappy=%ivyPath%/org.xerial.snappy/snappy-java/bundles/snappy-java-1.0.5.jar
call :concat %snappy%

set library=%ivyPath%/org.scala-lang/scala-library/jars/scala-library-2.8.0.jar
call :concat %library%

set compiler=%ivyPath%/org.scala-lang/scala-compiler/jars/scala-compiler-2.8.0.jar
call :concat %compiler%

set log4j=%ivyPath%/log4j/log4j/jars/log4j-1.2.15.jar
call :concat %log4j%

set slf=%ivyPath%/org.slf4j/slf4j-api/jars/slf4j-api-1.6.4.jar
call :concat %slf%

set zookeeper=%ivyPath%/org.apache.zookeeper/zookeeper/jars/zookeeper-3.3.4.jar
call :concat %zookeeper%

set jopt=%ivyPath%/net.sf.jopt-simple/jopt-simple/jars/jopt-simple-3.2.jar
call :concat %jopt%

for %%i in (%BASE_DIR%\core\target\scala-2.8.0\*.jar) do (
call :concat %%i
)

for %
%i in (%BASE_DIR%\core\lib\*.jar) do (
call :concat %%i
)

for %
%i in (%BASE_DIR%\perf\target\scala-2.8.0/kafka*.jar) do (
call :concat %%i
)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 替换成
for %%i in (%BASE_DIR%\libs\*.jar) do (
call :concat %%i
)
  • 1
  • 2
  • 3
  • 1
  • 2
  • 3
  • 我们仔细观察原来的配置大概意思是引入一些jar包啥的。但是会出现有的时候我们的文件根本没有那个jar。但是又引入了。会经常报错。所以我们改成引入libs下的所有jar.有啥就引入啥。这样就不会报错的。

大坑预防

  • 到这里我原本天真的认为就已经完事了。但是谁知我按照网上的教程继续的时候就出现如下错误

Windows上搭建Kafka+zookeeper运行环境

  • 首先第一行提示 set JMX_PORT to default value 9999 这个错误是因为我没有设置这个值。这倒是小事。但是后面报说找不到或无法加载主类kafka.Kafka这就让我费解。在这里我也是卡了一天了。后来在网上找到了一个方法。我不知道这是不是Kafka的bug。反正用这个方法我是解决了这个错误了。

    • 解决办法就是将kafka-run-class.bat文件中
set COMMAND= %JAVA% %KAFKA_OPTS% %KAFKA_JMX_OPTS% -cp %CLASSPATH% %*
  
  
  • 1
  • 1
  • 修改为
set COMMAND= %JAVA% %KAFKA_OPTS% %KAFKA_JMX_OPTS% -cp "%CLASSPATH%" %*
  
  
  • 1
  • 1
  • 对比我们发现就是将classpath加上双引号。搞了半天就是系统变量路径没有找到的原因。不过这个问题值得引起我们的注意。我们的kafka寄去你的搭建实在Java 的jdk基础是搭建的。所以前提我们得将jdk等这些配置到环境变量中去。这里的配置网上搜去吧很多。

服务开启

  • 到这一步我们离kafka的成功又不远了。我们新开cmd窗口cd到kafka的bin目录中。

  • 但是在执行开启之前我们需要先执行

Set JMX_PORT=19091(每个服务数字不能一样)
  
  
  • 1
  • 1
  • 然后在执行
kafka-server-start.bat ..\config\server.properties


4.创建Topic批处理

  • 官网上是没有提供windows版本的topic处理程序的。我们需要自己新建一个bat文件。这个bat文件的内容填写如下
kafka-run-class.bat  kafka.admin.TopicCommand  %* 
  
  
  • 1
  • 1

Windows上搭建Kafka+zookeeper运行环境

创建一个topic:
kafka-topics.bat --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic test

  • 有了这个批处理我们就可以通过它实现topic的创建。生产者发送消息和消费者的接收消息

创建一个topic:
kafka-topics.bat --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic test


  
  
  • 1
  • 1

5. 打开一个Producer:

cd /d G:\kafka_2.11-0.10.0.1\bin\windows
kafka-console-producer
.bat --broker-list localhost:9092 --topic test

 

6. 打开一个Consumer:

cd /d G:\kafka_2.11-0.10.0.1\bin\windows
kafka-console-consumer.bat --zookeeper localhost:2181 --topic test
然后就可以在Producer控制台窗口输入消息了。在消息输入过后,很快Consumer窗口就会显示出Producer发送的消息:

  
  
  • 1
  • 1
  • 最后在接收发送消息是我们需要重新创建新的cmd窗口。下面看看效果图。最终实现实时接收消息

Windows上搭建Kafka+zookeeper运行环境