Apache Kafka 在 Windows 系统上设置与运行教程

Apache Kafka 在 Windows 系统上设置与运行教程

手把手教你在 Windows 系统安装运行 Apache Zookeeper 和 Apache Kafka 服务。

介绍

这篇文章讲解在 Windows 如何配置启动 Apache Kafka 服务。同时,文章还讲解如何设置 Java 和 Apache Zookeeper 运行环境。

Apache Kafka 是一款速度快、可扩展的消息队列,能有效应对高负载市场场景下的读写任务,如 IO 相关操作。你可以从 http://kafka.apache.org/ (译注:中文网获取更多有关 Kafka 的信息。Apache Kafka 需要运行在 Zookeeper 实例上,一款分布式应用协调服务。你可以从 https://zookeeper.apache.org/ 获取有关 Zookeeper 信息。

可以从下面这个视屏教程中获取如何在 Windows 系统上设置 Kafka 相关帮助。

油管视频教程

下载相关组件

译注:由于是在 Windows 系统安装 Kafka,所以我们下载时请下载二进制文件(Binary downloads)而不要下载源文件(Source download)。

本教程假定我们将 Zookeeper 和 Kafka 解压到 c:\drive 目录,不过你可以将它们解压到任何路径都行。

这里我们需要使用的是完整的 zookeeper 项目而不是作为包启动的 Kafka 因为这里我们使用的是单个节点的 Zookeeper 实例。如果你希望以 zookeeper 包启动方式来运行 kafka 可以到 \kafka\bin\windows 目录下查找相关命令行工具。

安装

A. 设置 JDK

  1. 启动 JRE 安装程序,并选中「Change destination folder」 复选框,然后点击安装。

JRE 安装截图

  1. 将安装目录修改为任何不包含空格的文件夹内。比如 C:\Java\jre1.8.0_xx\。(默认安装目录为 C:\Program Files\Java\jre1.8.0_xx)然后点击下一步。

  2. 现在从 控制面板 > 系统 > 高级系统设置 > 环境变量 打开环境变量设置对话框。

  3. 点击用户变量节点的 新建 按钮创建 java 环境变量名为 JAVA_HOME 变量值为你的 JRE 目录。类似于

JRE 系统变量设置

  1. 点击 确定 按钮。

  2. 在「系统变量」节点搜索「Path」变量点击 编辑 按钮打开编辑对话框。

  3. 编辑「Path」变量值并在末尾追加录入「;%JAVA_HOME%\bin」,如下

编辑 Path 系统变量

  1. 打开命令行工具「cmd」并输入 java -version 确认 Java 是否安装成功,你可以看到刚刚安装的 Java 版本信息。

判断是否成功安装 Java

如果你的命令结果如上图所示,可以继续下一步。否则需要确认你所安装的 JRE 版本是否适用于你现在的操作系统架构(x86,x64),或者确认系统环境变量是否设置正确。

B. 安装 Zookeeper

  1. 进入到 Zookeeper 的 config 目录。我的在 C:\zookeeper-3.4.7\conf

  2. 将文件 zoo_sample.cfg 重命名为 zoo.cfg

  3. 使用文本编辑器如 notepad 打开 zoo.cfg 文件,个人喜好使用 notepad++ 文本编辑器。

  4. 查找并编辑 dataDir=/tmp/zookeeper 配置选项为 c:\zookeeper-3.4.7\data

  5. 和 Java 一样将 Zookeeper 目录添加到系统环境变量中。 a. 添加系统环境变量 ZOOKEEPER_HOME = C:\zookeeper-3.4.7 b. 编辑「Path」系统环境变量追加 ;%ZOOKEEPER_HOME%\bin

  6. 你可以在 zoo.cfg 配置文件中修改 Zookeeper 端口号(默认端口号为 2181)

  7. 开启一个新的「cmd」命令行窗口并输入 zkserver 命令

  8. 你可以看到如下图说是的详细提示信息

zkserver 启动信息

祝贺你,你的 Zookeeper 在端口 2181 成功启动并运行!

C. 设置 Kafka

  1. 进入 Kafka 的 config 目录。我的是 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:2181 配置到对应的 IP 和端口。对于这个实例我们使用的是同一台机器所以无需修改。并且在这个配置文件中还设置了 Kafka 端口和 broker.id 信息。保持原有配置就行了。

  5. Kafka 服务默认在 9092 端口运行,并且默认连接到 2181 端口的 Zookeeper 实例。如果你希望以

D. 运行 Kafka 服务器

重点: 在启动 Kafka 服务器之前请确认已成功启动并运行 Zookeeper 实例。

  1. 进入到 Kafka 安装目录 C:\kafka_2.11-0.9.0.0\

  2. 打开一个新的命令行窗口

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

启动 kafka 服务器

  1. 如果一切顺利,你的命令行提示信息会如下图所示:

启动 kafka 服务器成功

  1. 现在你的 Kafka 服务器已经成功启动并运行,你可以开始创建 topics 来存储信息。你还可以使用 Java、Scala 或直接使用命令行工具来生成或消费数据。

E. 创建 topics

  1. 现在让我们来创建名为「test」的 topic 它的复制因子(译注:replication factor:log 冗余的份数,这里的数字不能大于 broker 的数量),因为我们仅有一台 Kafka 服务器。如果你有超过一台 Kafkak 服务器集群在运行,你可以增加响应的复制因子设置来提升数据的可用性来实现一个容错系统。

  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

创建 topic

F. 创建 Test 服务器的生成这和消费者

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

  2. 输入下面的命令启动一个生产者服务:
kafka-console-producer.bat --broker-list localhost:9092 --topic test
  1. 再开启一个新的命令行窗口并进入到 C:\kafka_2.11-0.9.0.0\bin\windows 目录

  2. 输入如下命令启动一个消费者服务:
kafka-console-consumer.bat --zookeeper localhost:2181 --topic test
  1. 现在你有两个如下命令行窗口:

producer & consumer 命令行窗口

  1. 在生产者命令行窗口中输入数据并回车,然后你便可以在消费者窗口看到响应的消息。

producer & consumer message

  1. 如果你可以实现 push 数据,便可以在消费者服务这边查看消息,你完成了 Kafka 服务器的设置启动。

其它有用的命令行工具

  1. 查看 topics:kafka-topics.bat --list --zookeeper localhost:2181

  2. 查看 topic 描述信息: 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

原文

Setting Up and Running Apache Kafka on Windows OS

发表评论

电子邮件地址不会被公开。 必填项已用*标注