Apache Kafka 的本地部署

2,392 阅读3分钟

这是我参与11月更文挑战的第10天,活动详情查看:2021最后一次更文挑战

上一篇:认识 Apache Kafka

上一篇简单介绍了消息系统和 Apache Kafka,这篇简单介绍如何在本地部署并运行 Kafka,注意,本文介绍的内容容易上手,适合新手,仅限开发、测试、学习使用,请勿用在生产环境。

Apache Kafka 由 Java 和 Scala 开发,因此,需要有 Java 运行环境,安装之前需要确保本地已经安装了 JDK 1.8 或以上的版本。

JDK 的下载可以去这个地址:传送门,具体的安装步骤不在本文讨论范围内。

另外,Kafka 使用 Zookeeper 存储元数据,因此,要运行 Kafka 需要先部署 Zookeeper,不过 Kafka 官方的发行版里会自带 Zookeeper,可以直接使用。

Zookeeper 是一个分布式应用程序协调服务,独立之前是 Hadoop 的组件,可以提供配置维护、域名服务、分布式同步等功能。

下面开始介绍安装步骤。

第一步,下载 Kafka 的发行包。

在 Apache Kafka 的网站上可以找到下载页面,或者从这个地址 下载 kafka_2.13-3.0.0.tgz

下载之后解压并进入目录。

➜ tar -xzf kafka_2.13-3.0.0.tgz
➜ cd kafka_2.13-3.0.0

解压之后,目录结构大概是这样:

.
├── LICENSE
├── NOTICE
├── bin
├── config
├── libs
├── licenses
└── site-docs

其中,bin 目录下有很多 .sh 的脚本文件,包含了 Kafka 和 Zookeeper 的运行脚本,config 目录下包含了配置文件。

第二步,运行 Kafka。以下的命令都在 Kafka 的根目录下执行。

首先启动 Zookeeper 服务。

➜ bin/zookeeper-server-start.sh config/zookeeper.properties

然后再打开另一个命令行,启动 Kafka Broker 服务。

➜ bin/kafka-server-start.sh config/server.properties

第三步,创建一个 Topic,一个 Topic 可以为一个事件的队列。

➜ bin/kafka-topics.sh --create --topic hello-events --bootstrap-server localhost:9092 --partitions 1 --replication-factor 1
Created topic hello-events.

因为我们并没有搭建集群,因此 partitionsreplication-factor 的值都是 1。执行后会有一行信息提示我们 hello-events 创建成功了。

使用 kafka-topics.sh --describe 命令可以查看已经创建的 Topic 的信息。

➜ bin/kafka-topics.sh --describe --bootstrap-server localhost:9092
Topic: hello-events	TopicId: LeWuXHJwQqi9AUCuyWjOEA	PartitionCount: 1	ReplicationFactor: 1	Configs: segment.bytes=1073741824
	Topic: hello-events	Partition: 0	Leader: 0	Replicas: 0	Isr: 0

第四步,向 Topic 中写入事件。

再打开一个新的命令行,执行以下命令:

➜ bin/kafka-console-producer.sh --topic hello-events --bootstrap-server localhost:9092

这时,会进入一个交互式的命令行界面,在其中随意输入一些文本内容,并回车提交。

比如:

>First Event
>Second Event

第四步,读取事件。

再打开第四个命令行,输入一下命令:

➜ bin/kafka-console-consumer.sh --topic hello-events --from-beginning --bootstrap-server localhost:9092

就会读取到刚才在写入消息的交互式命令行输入的内容。这时,如果在写入消息的命令行继续写入内容,读取事件的命令行也会读取到新的内容。

此时,我们便在本地命令行完成了将 Kafka 作为消息系统,创建主题、向它发送消息并且从中读取消息的全过程。我们总共打开了四个命令行,要停止这些程序,直接在每个窗口中分别执行 Ctrl+C 即可。

另外 Zookeeper 和 Kafka 运行的过程中,会在 /tmp/kafka-logs /tmp/zookeeper 两个目录产生数据,可以将它们删除:

rm -rf /tmp/kafka-logs /tmp/zookeeper