不使用 Cygwin 的情况下在Windows 运行 Apache Kafka
引言
本教程的目的是提供在 Windows 操作系统上运行 Apache Kafka 的一个手把手的指南。本指南也将提供设置 Java 与 ZooKeeper 的指导。Apache kafka 是一个快速且可伸缩的消息队列系统,具有在读写环境中处理真正重载荷的能力。你可以在 http://kafka.apache.org/ 这个网站上找到更多关于 kafka 的东西。Apache kafka 需要一个正在运行的 ZooKeeper 实例,用于提供可靠的分布式调度。请在 https://zookeeper.apache.org/ 这个网站上寻找更多关于 ZooKeeper 的东西。
请查看这个视频来将 Kafka 安装到 Windows 上。(然而并没有视频,你懂的)
下载必要文件
-
根据你的操作系统和 CPU 架构下载服务器 JRE,地址为 http://www.oracle.com/technetwork/java/javase/downloads/jre8-downloads-2133155.html
-
下载并安装 7-zip,地址为 http://www.7-zip.org/download.html
-
下载并使用 7-zip 解压 Zookeeper,地址为 http://zookeeper.apache.org/releases.html
-
下载并使用 7-zip 解压 Kafka,地址为 http://kafka.apache.org/downloads.html
安装
a. 安装及配置 Java 运行时环境(JRE)
-
开始 JRE 的安装并选中“Change destination folder”复选框,然后点击 install。
-
修改安装路径为任何名字中不带空格的文件夹。比如 C:\Java\jre1.8.0_xx\ 。(默认情况下它将会是 C:\Program Files\Java\jre1.8.0_xx)然后点击 Next。
-
现在通过 控制面板 -> 系统 -> 高级系统设计 -> 环境变量 来打开系统环境变量对话框。
-
点击用户变量中的新建按钮,然后在变量名中输入 JAVA_HOME,并在变量值种设置你的 jre 路径。它看起来应该如下图:
(Java 的路径和版本可以随你使用的 Kafka 版本而改变)
-
点击确定按钮
-
在你刚刚打开的“环境变量”对话框中的“系统变量”部分,找到 Path 变量。
-
修改路径,在类似下图中的已经写有文字的文本框末尾输入“;%JAVA_HOME%\bin”。
-
要确认 Java 的安装情况,只需要打开 cmd 并输入“java -version”,你就可以看到你刚刚安装的 java 版本了。
如果你的命令提示符下出现类似上图的内容,你就可以放心的继续做后面的步骤了。否则,你需要检查你的安装版本是否与操作系统架构(x86,x64)相匹配,或 Path 环境变量是否正确。
b. 安装及运行 Zookeeper
-
打开你的 zookeeper 配置目录。我的目录是 C:\zookeeper-3.4.7\conf
-
重命名 “zoo_sample.cfg” 为 “zoo.cfg”
-
在任何文本编辑器中打开 zoo.cfg,比如使用记事本,不过我比较喜欢 notepad++
-
找到并修改 dataDir=/tmp/zookeeper 这段话为 dataDir=C:\zookeeper-3.4.7\data
-
就像我们在安装 Java 时那样,在系统环境变量中添加条目
-
在系统变量中添加 ZOOKEEPER_HOME = C:\zookeeper-3.4.7
-
修改 Path 系统变量,添加 ;%ZOOKEEPER_HOME%\bin;
-
你可以在 zoo.cfg 文件种修改默认 zookeeper 端口(默认端口为 2181)。
-
在一个新的 cmd 中输入 zkserver 来运行 zookeeper。
-
你将看到命令提示符出现类似下图种的一些细节。
恭喜,你的 zookeeper 为已经启动并运行在 2181 端口上了。
c. 配置 Kafka
-
打开你的 Kafka 配置目录。我的目录是 C:\kafka_2.11-0.9.0.0\config
-
修改“server.properties”文件
-
找到并修改“log.dirs=/tmp/kafka-logs”这行为“log.dir= C:\kafka_2.11-0.9.0.0\kafka-logs”
-
如果你的 zookeeper 正运行在一些其他的机器或集群上,你可以修改“zookeeper.connect=localhost:2181”为你自定义的 IP 和端口。在这次演示中,我们使用的是同一台机器,所以不需要修改。另外 Kafka 的端口和 broker.id 也可以在这个文件中进行配置。其他设置不变。
-
你的 Kafka 将会在默认的 9092 端口上运行并连接到默认端口为 2181 的 zookeeper 上。
d. 运行 Kafka 服务器
注意:
请确保你的 zookeeper 已经启动并在启动 Kafka 服务器之前运行。
-
打开 kafka 安装目录 C:\kafka_2.11-0.9.0.0\
-
按 Shift + 右键并选择“在此处打开命令行窗口”选项来在此处打开一个命令提示符
-
现在输入 .\bin\windows\kafka-server-start.bat .\config\server.properties 并按回车键
-
如果一切正常的话,命令提示符的内容看起来应该如下图
-
现在你的 Kafka 已经启动并运行了,所以现在你可以使用 java 或 scala 代码或在命令提示符中创建 topic 和 produce 或 consume 了。
e. 生成 Kafka 的 Topic
-
首先生成一个名为”test“的 Kafka 主题,并且设置复制因子参数为 1,因为我们只有一个 Kafka 服务器正在运行。如果你有一个包含多个 Kafka 服务的集群,你可以增大此参数,以此提高对数据可用性和系统容错性。
-
打开一个命令行窗口,进入到目录 C:\kafka_2.11-0.9.0.0\bin\windows
-
输入如下命令,并回车。
kafka-topics.bat --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic test
f. 在测试服务器上生成一对生产者和消费者
-
打开一个新的命令行窗口,进入到目录 C:\kafka_2.11-0.9.0.0\bin\windows
-
输入如下命令,启动一个生产者。kafka-console-producer.bat --broker-list localhost:9092 --topic test”.
-
再打开一个新的命令行窗口,同样进入到目录C:\kafka_2.11-0.9.0.0\bin\windows
-
输入如下命令,启动一个消费者。“kafka-console-consumer.bat --zookeeper localhost:2181 --topic test”
-
现在你有两个命令行窗口,如下面两张图所示。
-
在生产者命令行窗口内随便输入一段字符,然后回车,你应该能看到同样的消息出现在消费者的命令行窗口内。
-
如果在消费者端能看到你推送的消息,那么你已经成功的安装了Kafka。
一些有用的命令
-
列举 Topic: kafka-topics.bat --list --zookeeper localhost:2181
-
描述 Topic: kafka-topics.bat --describe --zookeeper localhost:2181 --topic [Topic Name]
-
从头读消息: kafka-console-consumer.bat --zookeeper localhost:2181 --topic [Topic Name] --from-beginning
-
删除 Topic: kafka-run-class.bat kafka.admin.TopicCommand --delete --topic [topic_to_delete] --zookeeper localhost:2181
参考链接
结论
我相信,这篇文章会对初/中级开发人员在 Windows 的服务器或者桌面系统上启动一个 kafka 服务器带来帮助。
你们的朋友
Gopal Tiwari
License
这篇文章以及相关代码遵循 The Code Project Open License (CPOL) 协议