如安在Windows上搭建并运行Kafka

2019-05-09

【51CTO.com快译】本文向您详细介绍如何在Windows操作系统上,配置和启动Apache Kafka服务器。与此同时,本指南也会提供对于Java和Apache ZooKeeper的配置与说明。

众所周知,Apache Kafka是一种快速、且具有可扩展性的消息传递队列。它能够在读写上下文的同时,处理与各种I/O相关的大流量负载。您可以通过链接:http://kafka.apache.org/,来了解Kafka的相关信息与知识。而作为可靠的分布式协调工具,Apache Kafka需要有一个可运行的ZooKeeper实例(译者注:ZooKeeper是一款分布式的协调服务,它为分布式应用提供了一致性服务接口)。有关ZooKeeper的信息,您可以通过https://zookeeper.apache.org/,来进一步了解。

相关资源

针对下文将讨论和涉及的内容,我录制了一段视频(请参见 https://youtu.be/OJKesEpO6ok),以帮助您通过动手实验的方式,来实现在Windows上搭建Kafka。同时,我在GitHub上创建了一系列的Spark-Scala实用程序(请参见https://github.com/gopal-tiwari),供您深入参考和练习。

另外,下面是本文所涉及到的、您需要提前准备并下载好的各种文件:

  • 根据操作系统和CPU架构的不同,您可以从http://www.oracle.com/technetwork/java/javase/downloads/jre8-downloads-2133155.html处下载服务器的jre。
  • 请从http://www.7-zip.org/download.html处下载并安装7-zip。
  • 请从http://zookeeper.apache.org/releases.html处下载ZooKeeper,并使用7-zip予以提取。
  • 请从http://kafka.apache.org/downloads.html处下载Kafka,并使用7-zip予以提取。

在下文中,我们将假设ZooKeeper和Kafka都已被解压缩,并存放在了C盘驱动器之中,当然您也可以将它们解压到其他任何位置。

另外,考虑到该实验只会用到单节点的ZooKeeper实例,因此我们只使用了未与Kafka一起打包的ZooKeeper。同样如果您愿意,可以使用位于kafka\bin\windows 目录中的Kafka安装包,它已经打包好了Zookeeper。

安装

A. JDK设置

1. 在双击JRE安装程序后,您可以通过单击“Install”来继续,当然也可以点击“Change destination folder”复选框。

2. JDK的默认安装路径为:C:\Program Files\Java\jre1.8.0_xx。不过,您也可以修改到诸如:C:\Java\jre1.8.0_xx等目标目录下,然后单击“下一步”。

3. 现在,您可以通过依次点击:控制面板-> 系统-> 高级系统设置-> 环境变量,来设置与变量相关的系统运行环境。

4. 如下图所示,在“User variables”部分里,您可以点击“New User Variable”,然后在弹出的对话框中输入“JAVA_HOME”作为“Variable name”,并且在“Variable value”中输入自己的jre所在路径。

(注:Java的具体路径和版本,可能会根据您所使用的Kafka版本而有所不同)

5. 现在直接单击“OK”。

6. 在“System Variable”部分里,定位并打开“Environment Variables”对话框。

7. 现在编辑“Path”。如下图所示,在“Variable value”的已有文本末尾,请键入“;%JAVA_HOME%\bin”。

8. 为了确认Java是否已安装,您可以打开“cmd”,键入“java –version”。此时,您应该能够看到刚才安装过的Java版本。

如果您的命令提示符显示与上图基本相似的话,那么一切准备就绪。否则,您需要重新检查自己的设置,是否与当前的操作系统架构(如x86或x64)相匹配,或者环境变量路径是否正确。

B. ZooKeeper的安装

1. 让我们将目光转到ZooKeeper的配置目录上。在此,我使用的是:“C:\zookeeper-3.4.7\conf”。

2. 我将文件“zoo_samplep.cfg”重命名为“zoo.cfg”。

3. 请使用诸如记事本之类的文本编辑器打开zoo.cfg,在此我用的是Notepad++。

4. 查找“dataDir=/tmp/zookeeper”字段,并修改“C:\zookeeper-3.4.7\data”。

5. 如上面对Java设置的那样,我们在系统环境变量中再添加一个条目。

a. 将“ZOOKEEPER_HOME = C:\zookeeper-3.4.7”添加到系统变量(System Variables)中。

b. 编辑名为“Path”的系统变量,添加“;%ZOOKEEPER_HOME%\bin”。

6. 您可以将zoo.cfg文件的默认ZooKeeper端口改为其他,其默认端口为2181。

7. 打开一个新的cmd,键入zkserver,以运行ZooKeeper。

8. 您将能够看到包含有如下详细信息的命令提示符。

现在,您的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:2181”改为目标IP地址和端口号。在此,我们使用的是同一台机器,因此没有必要做任何改变。此外,Kafka的端口号和broker.id也可以被适当地进行配置。而其他的设置项请保持原样。

5. 在本例中,我们的Kafka将在默认端口9092上运行,同时会连接到ZooKeeper的2181号默认端口上。

D. 运行Kafka服务器

重要提示:在启动Kafka服务器之前,请确保您的ZooKeeper实例已事先启动并运行着。

1. 请跳转到Kafka的安装目录,此处为:C:\kafka_2.11-0.9.0.0\。

2. 通过按住shift并右键单击,以打开命令提示符,并选择“在此处打开命令窗口”的选项。

3. 如下图所示,请键入“.\bin\windows\kafka-server-start.bat .\config\server.properties bat”,并回车。

4. 如果一切正常的话,您的命令提示符将会出现如下信息:

5. 至此,您的Kafka服务器已经启动并运行起来了,您可以继续创建用于存储消息的各种topic(主题)。此外,您也可以通过Java、Scala代码、或直接在命令提示符里产生或使用数据。

E. 创建Topics

1. 由于只有一个Kafka服务器正在运行,因此我们只需创建一个名为“test”、且replication factor(复制因子)为1的topic便可。当然,如果您有一个运行着多个Kafka服务器的集群,那么也可以相应地增加replication factor,以提高数据的可用性,并充当可容错的系统。

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”,然后回车。

F. 为测试服务器创建Producer和Consumer

1. 请在C:\kafka_2.11-0.9.0.0\bin\windows处再打开一个新的命令提示符。

2. 请键入命令:“kafka-console-producer.bat --broker-list localhost:9092 --topic test”,以启动一个producer。

3. 同样在C:\kafka_2.11-0.9.0.0\bin\windows处打开另一个新的命令提示符。

4. 请键入命令:“kafka-console-consumer.bat --zookeeper localhost:2181 --topic test”,以启动一个consumer。

5. 上述两个命令提示的截图,如下所示:

6. 现在,您可以在producer的命令提示符中键入任意内容,并按回车;那么您应该能够在另一个命令提示符中看到该消息的相同内容。

7. 可见,如果您能够在consumer端看到推送过来的消息,那么您就完成了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

原文标题:Setting Up and RunningApache Kafka on Windows OS,作者:Gopal Tiwari

【51CTO译稿,合作站点转载请注明原文译者和出处为51CTO.com】