windows 10 环境下配置kafka,及我所遇到的坑

十年河东,十年河西,莫欺少年穷

学无止境,精益求精

CSDN上资源下载地址:https://download.csdn.net/download/wolongbb/15420395  【包括kafka /java8/ ZooKeeper】并且和本博客所用版本一致。

一、安装JAVA JDK

1、下载安装包

http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

注意:根据32/64位操作系统下载对应的安装包

2、添加系统变量:JAVA_HOME=C:\Java\jdk1.8.0_40

二、安装ZooKeeper

kafka依赖ZooKeeper,因此,在启动kafka之前,应先安装启动ZooKeeper,启动ZooKeeper之前,应先配置ZooKeeper的环境变量。

1、 下载安装包 http://zookeeper.apache.org/releases.html#download

2、 解压并进入ZooKeeper目录,我的目录为:D:\tool\kafka\apache-zookeeper-3.6.2-bin

3、 在目录中的conf文件夹中找到zoo_sample.cfg,并将“zoo_sample.cfg”重命名为“zoo.cfg”

4、 打开“zoo.cfg”找到并编辑  dataDir=./zookeeper-3.4.13/data

5、admin.serverPort端口默认为8080,如果8080被占用,需要指定admin.serverPort端口,在zoo.cfg最后一行增加:admin.serverPort=8001 

6、audit.enable 默认为 false,我们设置为 true,在zoo.cfg最后一行增加:audit.enable=true

7、添加系统变量:ZOOKEEPER_HOME=D:\tool\kafka\apache-zookeeper-3.6.2-bin

8、编辑path系统变量,添加路径:%ZOOKEEPER_HOME%\bin

 

9、在zoo.cfg文件中修改默认的Zookeeper端口(默认端口2181),如果端口2181未被占用,则无需修改。

10、打开新的cmd,输入“zkServer“,运行Zookeeper,cmd需要指定目录:D:\tool\kafka\apache-zookeeper-3.6.2-bin 【注意:我的文件夹命名中带有bin,而不是指向bin文件夹】,也可以在D:\tool\kafka\apache-zookeeper-3.6.2-bin 文件夹中,按住 shift 键,右键鼠标,打开:windows power shell。

11、按照第10步,输入 zkServe 后,如果出现如下界面,则证明ZooKeeper启动成功。

注意:不要关了这个窗口,启动kafka时会用到。 

上述11个步骤中,我所遇到的坑如下:

坑1:

下载安装包时,应下载命名中带有bin的文件,不要去下载source文件,无论安装ZooKeeper 还是 kafka 安装路径中都不要有空格。切记。要考。

 通过HTTP下载即可:

坑2:

我的服务器中,admin.serverPort 的默认端口8080被占用了,导致启动时报错,因此,我显式指定了端口为:8001

坑3:

建议增加这个配置:audit.enable=true,关于这个配置,我并不知道干啥用的

三、安装Kafka

1、 下载安装包 :http://kafka.apache.org/downloads  【注意要下载二进制版本】

 

 

 

2、 解压并进入Kafka目录,我的路径:D:\tool\kafka\kafka_2.12-2.7.0

3、 进入config目录找到文件server.properties并打开

4、 找到并编辑:log.dirs=./logs

5、 找到并编辑zookeeper.connect=localhost:2181  【非集群部署的情况下,无需修改】

6、 Kafka会按照默认,在9092端口上运行,并连接zookeeper的默认端口:2181   【注意9092端口不应该被其他程序占用】

7、 进入Kafka安装目录D:\tool\kafka\kafka_2.12-2.7.0\bin\windows,按下Shift+右键,选择“打开命令窗口”选项,打开命令行,输入:

kafka-server-start.bat ..\..\config\server.properties

 如果不行

请使用:

 .\kafka-server-start.bat ..\..\config\server.properties

 

 

 

 注意:不要关了这个窗口,启用Kafka前请确保ZooKeeper实例已经准备好并开始运行

上述7个步骤中,我遇到的坑如下:

坑1、

环境变量Path要增加,如下截图:

分别如下:

1、ZOOKEEPER_HOME ,kafka依赖,安装ZooKeeper 时,就需要配置

%ZOOKEEPER_HOME%\bin

2、系统路径,这个据说和 wbem 文件夹下的exe有关,没有的话,加上这两个系统路径变量

C:\Windows\System32
C:\Windows\System32\wbem

3、据说和启动kafka有关,经过我的测试,应该没关系,不管有没有关系,加上保险一点。

D:\tool\kafka\kafka_2.12-2.4.0\bin\windows

坑2

进入Kafka安装目录D:\tool\kafka\kafka_2.12-2.7.0\bin\windows,按下Shift+右键,选择“打开命令窗口”选项,打开命令行,输入:kafka-server-start.bat ..\..\config\server.properties

但:

好多博客上都是进入D:\tool\kafka\kafka_2.12-2.7.0 安装路径 ,然后执行:
.\bin\windows\kafka-server-start.bat .\config\server.properties 

但,在我测试的过程中,执行 .\bin\windows\kafka-server-start.bat .\config\server.properties  无任何响应。

通用启动方式:

通用启动方式【统一在kafka文件夹中启动,利用自带的bat文件】

最后按照知乎作者的方案,通过kafka自带的bat文件启动相关服务:

 

它们都需要进入 D:\tool\kafka\kafka_2.12-2.7.0 目录,然后再启动相应的命令。

cd D:\kafka_2.11-2.4.0
启动zookeeper服务,运行命令:

bin\windows\zookeeper-server-start.bat config\zookeeper.properties
启动kafka服务,运行命令:

bin\windows\kafka-server-start.bat config\server.properties

 

 

 

四、测试

(linux直接在bin目录下.sh,windows需要进入bin\winndows下的.bat)

 

1、 创建主题,进入Kafka安装目录D:\Kafka\kafka_2.12-0.11.0.0,按下Shift+右键,选择“打开命令窗口”选项,打开命令行,输入:

.\bin\windows\kafka-topics.bat --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic test

clip_image005

注意:不要关了这个窗口

2、查看主题输入:

.\bin\windows\kafka-topics.bat --list --zookeeper localhost:2181

clip_image007

3、 创建生产者,进入Kafka安装目录D:\Kafka\kafka_2.12-0.11.0.0,按下Shift+右键,选择“打开命令窗口”选项,打开命令行,输入:

.\bin\windows\kafka-console-producer.bat --broker-list localhost:9092 --topic test

image

注意:不要关了这个窗口

4、 创建消费者,进入Kafka安装目录D:\Kafka\kafka_2.12-0.11.0.0,按下Shift+右键,选择“打开命令窗口”选项,打开命令行,输入:

.\bin\windows\kafka-console-consumer.bat --bootstrap-server localhost:9092 --topic test --from-beginning

此时,往生产者窗口写入消息,消费者窗口也能同步的接收到消息

image

5、查看topic,进入Kafka安装目录D:\Kafka\kafka_2.12-0.11.0.0,按下Shift+右键,选择“打开命令窗口”选项,打开命令行,输入:

  1.  
    .\bin\windows\kafka-topics.bat --describe --zookeeper localhost:2181 --topic
  2.  
    test

6、 重要(操作日志的处理):
kafka启动后,如果你去查看kafka所在的根目录,或者是kafka本身的目录,会发现已经默认生成一堆操作日志(这样看起来真心很乱):

而且会不断生成不同时间戳的操作日志。刚开始不知所措,一番研究后,看了启动的脚本内容,发现启动的时候是会默认使用到这个log4j.properties文件中的配置,而在zoo.cfg是不会看到本身的启动会调用到这个,还以为只有那一个日志路径:

在这里配置一下就可以了,找到config下的log4j.properties:

zookeeper.log.dir=D:\tool\kafkaLogs

将路径更改下即可,这样就可以归档在一个文件夹下边了,路径根据自己喜好定义:

另外如何消除不断生成日志的问题,就是同一天的不同时间会不停生成。

修改这里,还是在log4j.properties中:

本身都为trace,字面理解为会生成一堆跟踪日志,将其改为INFO即可。

kafka server.properties 配置文件详解(二)

   虽然在前面一部分我们启动了kafka集群,并通过控制台的方式实现了producer和consumer,但是我们还是了解一下kafka单个节点是的配置参数属性,

也只有了解了这些参数的配置,才能将kafka的性能发挥到最好。

  标红部分为集群必配属性,致于其它的参数配置等学完后再回过头来看这些参数,你就知道是什么意思了

 
   1.broker.id
        broker.id=2  一般采用ip的后三位来用来标识是哪台kafka的broker,利于定位和排错
    2.Prot
        tcp用来监控的kafka端口
        listeners=PLAINTEXT://192.168.43.17:9092
    3.Zookeeper.connect
       #kafka连接zk的集群,多个用”,”号隔开
      #zookeeper.connect=192.168.43.15:2181,192.168.43.16:2181,192.168.43.17:2181
      #但是这样写不是很友好,kafka在连上zk后,直接在zk的根目录创建自己需要的文件夹,这样会导致zk的根目录也非常乱
     #同时如果有别的项目也在用zk创建1个controller目录,kafka会产生一个controller的文件夹,这样会导致混淆
     #如果需要部署2个独立的kafka storm环境时,只有一个zk集群时
     #综上所述,可以采用命名空间的方式解决以上问题:
      zookeeper.connect=192.168.43.15:2181,192.168.43.16:2181,192.168.43.17:2181/kafka_1(推荐使用这2种方式)
      zookeeper.connect=192.168.43.15:2181,192.168.43.16:2181,192.168.43.17:2181/kafka_2
  4.Log.dirs(commit log)
    #用来存储日志的路径,它上面存放了多个log segment,如果采用了磁盘阵列,路径可以是多个
    #如果采用了多个存储路径,1个partition只能存放在1个路径下,因为顺序的磁盘读写操作速度  
    #可以接近随机的内存读写速度
      log.dirs=/var/lib/kafka
  5.num.recovery.threads.per.data.dir=1     
    #kafka配置了1个线程池,当kafka启动时打开每个segment,启动失败时检查并截取每个segment
    #服务关闭时,关闭segments的句柄、管道的flush操作,
    num.recovery.threads.per.data.dir=1
     #注意是1个路径默认是1个线程,如果log.dirs配置了3个路径,那么将会有24个线程
   6.auto crteat.topics.enable(配置文件中没有)
        #自动创建1个topic
        #当不存在1个topic时会创建,读的时候会创建1个topic,通过api访问元数据时,如果不存在会创建1个topic
        #但是这个创建的tpoic都是采用默认的配置,因此不建议使用
        # 一般情况下我们设置成false
   7.num.partitions
        #设置partitions 的个数
        num.partitions=1
   8.log.retention.ms
        #日志存放时间,依据是文件最后1次更新文件的时间,这个参数是针对broker的,按小时来算的
        log.retention.hours=168                
     #存放1个星期
   9.log.retention.bytes
        #partition保留数据的大小,这个参数是针对1个partitions 的
        #如果有8个partition,每个partition设置的是1GB,那最多存8GB的东西,超过了就会将老的数据删除
        log.retention.bytes=1073741824
   10.log.segment.bytes
      #设置segment 片断的大小,如果存放的达到了设置的大小,这个segment 将会关闭,并且将会
     #创建1个新的打开的segment,如果1个segment达到了设置的大小并且已关闭,那么这个segment是可
     #以被删除的,如果这个segment设置的小,则会频繁的创建segment,会影响kafka的性能,如果设置的较大
     #超过了log.retention.ms的保存时间,这样会造成数据不一致或丢失的情况,因此,设置每个segment的
        #大小还是要根据业务量来判断
       log.segment.bytes=1073741824
   11.log.segment.ms
        #另一种控制segments关闭的参数设置
        log.segment.ms
   12.message.max.bytes
        #发送信息的最大单位值,如果超过了,会造成数据丢失
        #如果要发送的数据量较大,可以调整这个参数和检查发送数据量的
        message.max.bytes=1024
 

 

有不足之处,请各位看官批评指出,我将及时改正,以提高知识总结的正确性和严谨性,为大家学习提供方便!!! 如若转载,请注明出处!!!

最后,提供下kafka可视化工具下载地址:https://download.csdn.net/download/wolongbb/15433836

参考文献:

https://www.cnblogs.com/xuzimian/p/10138442.html  【我的成功所在】

https://blog.csdn.net/weixin_38004638/article/details/91893910 【CSDN】

https://stackoverflow.com/questions/58754086/answer/submit 【英文站点BBS】

https://zhuanlan.zhihu.com/p/101162159  【知乎】

https://www.cnblogs.com/MrRightZhao/p/11094680.html 【配置说明】

 

2024-06-21 安装kafka为windows服务

参考:https://blog.csdn.net/liaoyunjxn/article/details/115918309

上面是常见的在windows服务器上使用命令行方式来启动kafka,缺点上面已经提到了,那接下来看看怎样将它安装为服务。

先来看看将kafka安装为服务之后的效果。

 

 

怎样将kafka安装为windows服务,zookeeper也一样 9

同样的,zookeeper安装为windows服务后,也可以在服务列表里面看到。

 

 

怎样将kafka安装为windows服务,zookeeper也一样 10

上面的服务名称kafka和zookeeper是可以随便取的。你高兴叫啥都成,例如叫:jhrs.com也是可以的。

如果你也打算将kafka和zookeeper安装为windows服务,下面就是本文要介绍的步骤了,并且引入一个小软件,叫nssm。

NSSM简介
NSSM是一个服务封装程序,它可以将普通exe、bat、以及任何程序封装成服务,使之像windows服务一样运行,就像一个服务壳一样,将你的程序包在NSSM里面。

官网解释如下:

NSSM – the Non-Sucking Service Manager

nssm is a service helper which doesn’t suck. srvany and other service helper programs suck because they don’t handle failure of the application running as a service. If you use such a program you may see a service listed as started when in fact the application has died. nssm monitors the running service and will restart it if it dies. With nssm you know that if a service says it’s running, it really is. Alternatively, if your application is well-behaved you can configure nssm to absolve all responsibility for restarting it and let Windows take care of recovery actions.

nssm logs its progress to the system Event Log so you can get some idea of why an application isn’t behaving as it should.

nssm also features a graphical service installation and removal facility. Prior to version 2.19 it did suck. Now it’s quite a bit better.

如何使用
下载NSSM download.  https://www.nssm.cc/download
根据自己的平台,将32/64位nssm.exe文件解压至任意文件夹。
cmd定位至nssm.exe所在目录。
输入 nssm install {服务名称},即注册服务的名称。注册服务弹出如下NSSM界面。
kafka安装成win服务
按照上面的步骤操作就可以了,核心就是下面的截图,也可以添加依赖服务。

Path:E:\Tool\kafka_2.12-2.2.0\bin\windows\kafka-server-start.bat

Startup directory:E:\Tool\kafka_2.12-2.2.0\bin\windows

Arguments:E:\Tool\kafka_2.12-2.2.0\config\server.properties

 

 

怎样将kafka安装为windows服务,zookeeper也一样 11

Path参数为kafka的启动命令,一般在windows目录。Startup directory为启动目录,Arguments是启动参数,只有启动参数需要手工填一下,当你在Path点右边按钮选择后会自动的填上前面2个参数。自己操作体验下就明白了。

完了之后点击 Install Service 就可以了。

如果有依赖服务,按下图所示填上即可。

 

 

zookeeper安装为windows服务
zookeeper也是可以安装为windows服务的,操作如下图所示:

 

 

  

nssm常用命令
nssm install servername //创建servername服务
nssm start servername //启动服务
nssm stop servername //暂停服务
nssm restart servername //重新启动服务
nssm remove servername //删除创建的servername服务
总结
NSSM可以将控制台程序一样的安装为服务,再配合定时任务,可以做好多事情。
 

posted @ 2021-02-22 17:28  天才卧龙  阅读(7657)  评论(4编辑  收藏  举报