在安装zookeeper前,请确认java环境已经正确安装和配置JAVA_HOME环境变量。否则无法启动zookeeper和kafka的。
1.安装Zookeeper
Kafka的运行依赖于Zookeeper,所以在运行Kafka之前我们需要安装并运行Zookeeper 3.4.13
1.1 下载安装文件: http://mirror.bit.edu.cn/apache/zookeeper/
1.2 解压文件(本文解压到 D:\soft\bigdata\zookeeper-3.4.13)
1.3 打开D:\soft\bigdata\zookeeper-3.4.13\conf,把zoo_sample.cfg重命名成zoo.cfg
1.4 从文本编辑器里打开zoo.cfg
1.5 修改dataDir和dataLogDir保存路径
dataDir=D:\data\logs\zookeeper
dataLogDir=D:\data\logs\zookeeper
1.6 添加如下系统变量:ZOOKEEPER_HOME: D:\soft\bigdata\zookeeper-3.4.13
Path: 在现有的值后面添加 ;%ZOOKEEPER_HOME%\bin;
1.7 运行Zookeeper: 打开cmd然后执行zkserver 命令。如果打印以下信息则表示zookeeper已经安装成功并运行在2181端口。
2.安装并运行Kafka
2.1 下载安装文件: http://kafka.apache.org/downloads.html
2.2 解压文件(本文解压到 D:\kafka_2.11-0.10.2.0)
2.3 打开D:\kafka_2.11-0.10.2.0\config\ server.properties
2.4 把 log.dirs的值改成 log.dirs=D:\data\logs\kafka
2.5 D:\kafka_2.11-0.10.2.0\bin文件夹下的.sh命令脚本是在shell下运行的,此文件夹下还有个 windows文件夹,里面是windows下运行的.bat命令脚本
2.6 在D:\kafka_2.11-0.10.2.0文件夹中”Shift+鼠标右键”点击空白处打开命令提示窗口 (本文用的shi
是powershell, 输入并执行一下命令以打开kafka:
.\bin\windows\kafka-server-start.bat .\config\server.properties
显示的信息如下,则表示正常运行
提示:把这个命令及参数放到一个bat文件中,保存到D:\kafka_2.11-0.10.2.0文件夹中,双击执行也是可用的。下面的命令也是如此。
3.创建topics
3.1在D:\kafka_2.11-0.10.2.0\bin\windows文件夹中”Shift+鼠标右键”点击空白处打开powershell命令提示窗口
.\kafka-topics.bat --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic monitorupload
powershell中,执行命令不成功时,如果有如下提示,请在命令名称前加:“.\”
4.打开一个Producer
4.1在D:\kafka_2.11-0.10.2.0\bin\windows文件夹中”Shift+鼠标右键”点击空白处打开命令提示窗口
.\kafka-console-producer.bat --broker-list localhost:9092 --topic monitorupload
创建好下面的消费者后,就可用在上面这个生产者窗口输入信息了。
5.打开一个Consumer
5.1在D:\kafka_2.11-0.10.2.0\bin\windows文件夹中”Shift+鼠标右键”点击空白处打开命令提示窗口,执行命令:
.\bin\windows\kafka-console-consumer.bat --bootstrap-server localhost:9092 --from-beginning --topic monitorupload
网上一些例子用下面的命令创建消费者:
kafka-console-consumer.bat --zookeeper localhost:2181 --topic topicname
但在我这个环境下执行这个命令,会提示zookeeper是一个不可识别的选项的错误:
以上打开的窗口不要关闭
然后就可以在Producer控制台窗口输入消息了。在消息输入过后,很快Consumer窗口就会显示出Producer发送的消息
呃,,,,在生产者窗口输入中文,消费者窗口输出乱码。。。。开发时要注意啦