最近项目中使用了kafka作为消息中间件进行服务间数据通信;
公司里的kafka集群是5台机器的,5台zookeeper做负载均衡;但是莫名的总有一个节点会挂掉..由于我还很菜..所以就本地搭个单机版的 kafka自己玩玩...
kafka 2.11的安装包就留个百度云地址了.....
https://pan.baidu.com/s/1L_9bbieTSsjWAe_3JLzN3w
自取
zookeeper3.4.10的安装包:
https://pan.baidu.com/s/1UVZTrtsWbIybMlWCUA4E2A
Kafka的运行依赖于Zookeeper,所以在运行Kafka之前我们需要安装并运行Zookeeper ,而这一整套环境的基础环境就是JDK.我这里环境用的是jdk8
安装zookeeper
- 解压文件(本文解压到 D:\zookeeper-3.4.8)
- 打开D:\zookeeper-3.4.8\conf,把zoo_sample.cfg重命名成zoo.cfg
- 从文本编辑器里打开zoo.cfg
- 修改dataDir和dataLogDir保存路径
dataDir=D:\data\logs\zookeeper
dataLogDir=D:\data\logs\zookeeper
只有一个路径的时候,改一个也是可以的;
- 添加如下系统变量
ZOOKEEPER_HOME: D:\zookeeper-3.4.8
Path: 在现有的值后面添加 ;%ZOOKEEPER_HOME%\bin;
- 运行Zookeeper: 打开cmd然后执行
zkserver
命令。如果打印以下信息则表示zookeeper已经安装成功并运行在2181端口
此时,zookeeper安装成功
安装kafka
- 解压文件(本文解压到 D:\kafka_2.11-0.10.2.0)
- 打开D:\kafka_2.11-0.10.2.0\config\ server.properties
- 把 log.dirs的值改成 log.dirs=D:\data\logs\kafka
- 可以更改zk的配置
- D:\kafka_2.11-0.10.2.0\bin文件夹下的.sh命令脚本是在shell下运行的,此文件夹下还有个 windows文件夹,里面是windows下运行的.bat命令脚本
- 在D:\kafka_2.11-0.10.2.0文件夹中”Shift+鼠标右键”点击空白处打开命令提示窗口
- 输入并执行一下命令以打开kafka:
- kafka启动成功:
注意打开的zk和kafka是两个不同的cmd,所以都不能关.....
然后再开cmd,的生产,消费都是要单独开cmd;
常用的命令如下:
#启动zk
zkserver
#启动kafka
.\bin\windows\kafka-server-start.bat .\config\server.properties #根据自己的当前位置
#创建test主题的topic
.\bin\windows\kafka-topics.bat --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic test
# 生产test主题的kafka消息
.\bin\windows\kafka-console-producer.bat --broker-list localhost:9092 --topic test
#以默认用户组消费test主题的消息
.\bin\windows\kafka-console-consumer.bat --zookeeper localhost:2181 --topic test
#查看当前list
.\kafka-topics.bat --zookeeper localhost:2181 --list
在开启的producer cmd中生产数据在,consumer中就可以及时收到信息;
安装常见问题:
启动kafka时,报错:
[Kafka][错误: 找不到或无法加载主类 Files\Java\jdk1.8.0_101\lib\dt.jar;C:\Program]
需要修改kafka_2.12-1.0.0\bin\windows\kafka-run-class.bat文件。
具体修改内容是,将:
set COMMAND=%JAVA% %KAFKA_HEAP_OPTS% %KAFKA_JVM_PERFORMANCE_OPTS% %KAFKA_JMX_OPTS% %KAFKA_LOG4J_OPTS% -cp %CLASSPATH% %KAFKA_OPTS% %
修改为:
set COMMAND=%JAVA% %KAFKA_HEAP_OPTS% %KAFKA_JVM_PERFORMANCE_OPTS% %KAFKA_JMX_OPTS% %KAFKA_LOG4J_OPTS% -cp "%CLASSPATH%" %KAFKA_OPTS% %
%CLASSPATH%要用双引号