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

Posted OSC开源社区

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了不使用 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 上。(然而并没有视频,你懂的)


下载必要文件



安装


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

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

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


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

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

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


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


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

  1. 点击确定按钮

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

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


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


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


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


如果你的命令提示符下出现类似上图的内容,你就可以放心的继续做后面的步骤了。否则,你需要检查你的安装版本是否与操作系统架构(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。

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

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


恭喜,你的 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 并按回车键


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

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

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


现在你的 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

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


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”


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


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


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



如果在消费者端能看到你推送的消息,那么你已经成功的安装了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

参考链接

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

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

结论

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

你们的朋友

Gopal Tiwari                                              


License

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



以上是关于不使用 Cygwin 的情况下在Windows 运行 Apache Kafka的主要内容,如果未能解决你的问题,请参考以下文章

在不使用 X-Windows 的情况下在 Linux 中设置或读取 Caps Lock 状态

如何在不脱离控制台的情况下在 Windows 中的 Python 中执行 os.execv()?

如何在不使用 C++ 中的 RegDeleteKeyEx 的情况下在 64 位树中删除 Windows x64 中的注册表项?

如何在不使用 Docker 或 Windows Server 2016 上的 Confluent 平台的情况下在 Kafka 中设置 Debezium SQL Server 连接器?

是否可以在不安装 Python 的情况下在 Windows 上安装 Robot Framework?

默认情况下在PHPUnit中运行单个测试套件