不使用 Cygwin 的情况下在Windows 运行 Apache Kafka

admin 9年前

引言

本教程的目的是提供在 Windows 操作系统上运行 Apache Kafka 的一个手把手的指南。本指南也将提供设置 Java 与 ZooKeeper 的指导。Apache kafka 是一个快速且可伸缩的消息队列系统,具有在读写环境中处理真正重载荷的能力。你可以在 http://kafka.apache.org/ 这个网站上找到更多关于 kafka 的东西。Apache kafka 需要一个正在运行的 ZooKeeper 实例,用于提供可靠的分布式调度。请在 https://zookeeper.apache.org/ 这个网站上寻找更多关于 ZooKeeper 的东西。

请查看这个视频来将 Kafka 安装到 Windows 上。(然而并没有视频,你懂的)

下载必要文件

  1. 根据你的操作系统和 CPU 架构下载服务器 JRE,地址为 http://www.oracle.com/technetwork/java/javase/downloads/jre8-downloads-2133155.html

  2. 下载并安装 7-zip,地址为 http://www.7-zip.org/download.html

  3. 下载并使用 7-zip 解压 Zookeeper,地址为 http://zookeeper.apache.org/releases.html

  4. 下载并使用 7-zip 解压 Kafka,地址为 http://kafka.apache.org/downloads.html

安装

a. 安装及配置 Java 运行时环境(JRE)

  1. 开始 JRE 的安装并选中“Change destination folder”复选框,然后点击 install。

不使用 Cygwin 的情况下在Windows 运行 Apache Kafka

  1. 修改安装路径为任何名字中不带空格的文件夹。比如 C:\Java\jre1.8.0_xx\ 。(默认情况下它将会是 C:\Program Files\Java\jre1.8.0_xx)然后点击 Next。

  2. 现在通过 控制面板 -> 系统 -> 高级系统设计 -> 环境变量 来打开系统环境变量对话框。

  3. 点击用户变量中的新建按钮,然后在变量名中输入 JAVA_HOME,并在变量值种设置你的 jre 路径。它看起来应该如下图:

不使用 Cygwin 的情况下在Windows 运行 Apache Kafka

(Java 的路径和版本可以随你使用的 Kafka 版本而改变)

  1. 点击确定按钮

  2. 在你刚刚打开的“环境变量”对话框中的“系统变量”部分,找到 Path 变量。

  3. 修改路径,在类似下图中的已经写有文字的文本框末尾输入“;%JAVA_HOME%\bin”。

不使用 Cygwin 的情况下在Windows 运行 Apache Kafka

  1. 要确认 Java 的安装情况,只需要打开 cmd 并输入“java -version”,你就可以看到你刚刚安装的 java 版本了。

不使用 Cygwin 的情况下在Windows 运行 Apache Kafka

如果你的命令提示符下出现类似上图的内容,你就可以放心的继续做后面的步骤了。否则,你需要检查你的安装版本是否与操作系统架构(x86,x64)相匹配,或 Path 环境变量是否正确。

b. 安装及运行 Zookeeper

  1. 打开你的 zookeeper 配置目录。我的目录是 C:\zookeeper-3.4.7\conf

  2. 重命名 “zoo_sample.cfg” 为 “zoo.cfg”

  3. 在任何文本编辑器中打开 zoo.cfg,比如使用记事本,不过我比较喜欢 notepad++

  4. 找到并修改 dataDir=/tmp/zookeeper 这段话为 dataDir=C:\zookeeper-3.4.7\data

  5. 就像我们在安装 Java 时那样,在系统环境变量中添加条目

    1. 在系统变量中添加 ZOOKEEPER_HOME = C:\zookeeper-3.4.7

    2. 修改 Path 系统变量,添加 ;%ZOOKEEPER_HOME%\bin;

  6. 你可以在 zoo.cfg 文件种修改默认 zookeeper 端口(默认端口为 2181)。

  7. 在一个新的 cmd 中输入 zkserver 来运行 zookeeper。

  8. 你将看到命令提示符出现类似下图种的一些细节。

不使用 Cygwin 的情况下在Windows 运行 Apache Kafka

恭喜,你的 zookeeper 为已经启动并运行在 2181 端口上了。

c. 配置 Kafka

  1. 打开你的 Kafka 配置目录。我的目录是 C:\kafka_2.11-0.9.0.0\config

  2. 修改“server.properties”文件

  3. 找到并修改“log.dirs=/tmp/kafka-logs”这行为“log.dir= C:\kafka_2.11-0.9.0.0\kafka-logs”

  4. 如果你的 zookeeper 正运行在一些其他的机器或集群上,你可以修改“zookeeper.connect=localhost:2181”为你自定义的 IP 和端口。在这次演示中,我们使用的是同一台机器,所以不需要修改。另外 Kafka 的端口和 broker.id 也可以在这个文件中进行配置。其他设置不变。

  5. 你的 Kafka 将会在默认的 9092 端口上运行并连接到默认端口为 2181 的 zookeeper 上。

d. 运行 Kafka 服务器

注意:

请确保你的 zookeeper 已经启动并在启动 Kafka 服务器之前运行。

  1. 打开 kafka 安装目录 C:\kafka_2.11-0.9.0.0\

  2. 按 Shift + 右键并选择“在此处打开命令行窗口”选项来在此处打开一个命令提示符

  3. 现在输入 .\bin\windows\kafka-server-start.bat .\config\server.properties 并按回车键

              不使用 Cygwin 的情况下在Windows 运行 Apache Kafka

  1. 如果一切正常的话,命令提示符的内容看起来应该如下图

不使用 Cygwin 的情况下在Windows 运行 Apache Kafka

  1. 现在你的 Kafka 已经启动并运行了,所以现在你可以使用 java 或 scala 代码或在命令提示符中创建 topic 和 produce 或 consume 了。

e. 生成 Kafka 的 Topic

  1. 首先生成一个名为”test“的 Kafka 主题,并且设置复制因子参数为 1,因为我们只有一个 Kafka 服务器正在运行。如果你有一个包含多个 Kafka 服务的集群,你可以增大此参数,以此提高对数据可用性和系统容错性。

  2. 打开一个命令行窗口,进入到目录 C:\kafka_2.11-0.9.0.0\bin\windows

  3. 输入如下命令,并回车。

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

不使用 Cygwin 的情况下在Windows 运行 Apache Kafka

f. 在测试服务器上生成一对生产者和消费者

  1. 打开一个新的命令行窗口,进入到目录 C:\kafka_2.11-0.9.0.0\bin\windows

  2. 输入如下命令,启动一个生产者。kafka-console-producer.bat --broker-list localhost:9092 --topic test”.

  3. 再打开一个新的命令行窗口,同样进入到目录C:\kafka_2.11-0.9.0.0\bin\windows

  4. 输入如下命令,启动一个消费者。“kafka-console-consumer.bat --zookeeper localhost:2181 --topic test”

  5. 现在你有两个命令行窗口,如下面两张图所示。

不使用 Cygwin 的情况下在Windows 运行 Apache Kafka

  1. 在生产者命令行窗口内随便输入一段字符,然后回车,你应该能看到同样的消息出现在消费者的命令行窗口内。

不使用 Cygwin 的情况下在Windows 运行 Apache Kafka

  1. 如果在消费者端能看到你推送的消息,那么你已经成功的安装了Kafka。

一些有用的命令

  1. 列举 Topic: kafka-topics.bat --list --zookeeper localhost:2181

  2. 描述 Topic: kafka-topics.bat --describe --zookeeper localhost:2181 --topic [Topic Name]

  3. 从头读消息: kafka-console-consumer.bat --zookeeper localhost:2181 --topic [Topic Name] --from-beginning

  4. 删除 Topic: kafka-run-class.bat kafka.admin.TopicCommand --delete --topic [topic_to_delete] --zookeeper localhost:2181

参考链接

  1. http://kafka.apache.org/documentation.html

  2. https://zookeeper.apache.org/doc/trunk/zookeeperStarted.html

结论

我相信,这篇文章会对初/中级开发人员在 Windows 的服务器或者桌面系统上启动一个 kafka 服务器带来帮助。

你们的朋友

Gopal Tiwari                                              

License

这篇文章以及相关代码遵循 The Code Project Open License (CPOL) 协议