Apache Kafka 是由 Apache Software Foundation 开发的开源分布式事件流平台。它是用 Scala 和 Java编程语言编写的。 Kafka 可以安装在任何支持 Java 的平台上。 本教程提供了在 Ubuntu 20.04 LTS 系统上安装 Apache Kafka 的分步教程。你还将学习怎样在 Kafka 中创建主题以及怎样运行生产者和消费者节点。

先决条件

需要 sudo 特权帐户访问 Ubuntu 20.04 系统。

第 1 步 - 安装 Java

Apache Kafka 可以在平台支持的任何 Java 上运行。 要在 Ubuntu 系统上设置 Kafka,首先需要安装 Java。我们在这里使用 OpenJDK 的开源版本。 安装 OpenJDK。
  1. sudo apt update
  2. sudo apt install default-jdk
检查当前活动的Java版本。
  1. java --version
  2. openjdk version "11.0.9.1" 2020-11-04
  3. OpenJDK Runtime Environment (build 11.0.9.1+1-Ubuntu-0ubuntu1.20.04)
  4. OpenJDK 64-Bit Server VM (build 11.0.9.1+1-Ubuntu-0ubuntu1.20.04, mixed mode, sharing)

第 2 步 – 下载最新的 Apache Kafka

从官方网站下载 Apache Kafka 的二进制文件。
  1. wget https://mirrors.tuna.tsinghua.edu.cn/apache/kafka/2.8.1/kafka_2.13-2.8.1.tgz
然后解压缩存档文件
  1. tar xzf kafka_2.13-2.8.1.tgz
  2. mv kafka_2.13-2.8.1 /usr/local/kafka

第 3 步 – 创建 Systemd 文件

接下来,需要为 Zookeeper 和 Kafka 服务创建一个 systemd 单元文件,这里我们通过 Systemd 启动/停止 Zookeeper 和 Kafka 服务。 首先,创建一个 Zookeeper systemd 单位文件。
  1. vim /etc/systemd/system/zookeeper.service
然后添加以下内容,保存并关闭文件。
  1. [Unit]
  2. Description=Apache Zookeeper server
  3. Documentation=https://zookeeper.apache.org
  4. Requires=network.target remote-fs.target
  5. After=network.target remote-fs.target
  6. [Service]
  7. Type=simple
  8. ExecStart=/usr/local/kafka/bin/zookeeper-server-start.sh /usr/local/kafka/config/zookeeper.properties
  9. ExecStop=/usr/local/kafka/bin/zookeeper-server-stop.sh
  10. Restart=on-abnormal
  11. [Install]
  12. WantedBy=multi-user.target
接下来,为 Kafka 服务创建一个 systemd 单位文件:
  1. vim /etc/systemd/system/kafka.service
请添加以下内容,保存并关闭文件。确保设置的 JAVA_HOME 为系统上安装的 Java 路径。
  1. [Unit]
  2. Description=Apache Kafka Server
  3. Documentation=https://kafka.apache.org/documentation.html
  4. Requires=zookeeper.service
  5. [Service]
  6. Type=simple
  7. Environment="JAVA_HOME=/usr/lib/jvm/java-1.11.0-openjdk-amd64"
  8. ExecStart=/usr/local/kafka/bin/kafka-server-start.sh /usr/local/kafka/config/server.properties
  9. ExecStop=/usr/local/kafka/bin/kafka-server-stop.sh
  10. [Install]
  11. WantedBy=multi-user.target
重新加载 systemd 守护程序以加载新创建的 systemd 单位文件。
  1. systemctl daemon-reload

第 4 步 – 启动 Kafka 和 Zookeeper 服务

首先,需要启动 ZooKeeper 服务,然后再启动Kafka。 使用 systemctl 命令启动单节点 ZooKeeper 实例。
  1. sudo systemctl start zookeeper
然后启动 Kafka 服务器并查看执行状态。
  1. sudo systemctl start kafka
  2. sudo systemctl status kafka
此时 Kafka 已经安装成功。下面将介绍如何使用 Kafka 服务器。

第 5 步 – 在 Kafka 中创建主题

Kafka 提供了多个预构建的 Shell 脚本来处理它。首先,在具有单个副本的单个分区上创建一个名为“ testTopic”的主题。
  1. cd /usr/local/kafka
  2. bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic testTopic
  3. Created topic testTopic.
复制因子指示创建的数据的副本数。将此值保留为1,因为 Kafka 正在单个实例上运行。 将分区选项设置为要对数据进行分区的代理数。将此值保持为 1,因为正在单个代理上运行。 你可以运行与上述相同的命令来创建多个主题。之后,你可以通过执行以下命令来检查 Kafka 创建的主题。
  1. bin/kafka-topics.sh --zookeeper localhost:2181 --list
  2. [output]
  3. testTopic
或者,你可以配置代理以在发布不存在的主题时自动创建主题,而不是手动创建主题。

第 6 步 – 使用 Kafka Producer 发送消息

“生产者”是将数据输入 Kafka 的过程。 Kafka 带有命令行客户端,该客户端从文件或标准输入中获取输入,并将其作为消息发送到 Kafka 集群。默认的 Kafka 将每一行作为单独的消息发送。 让我们运行生产者,然后在控制台中键入一些消息以将它们发送到服务器。
  1. bin/kafka-console-producer.sh --broker-list localhost:9092 --topic testTopic
  2. >Welcome to kafka
  3. >This is my first topic
  4. >
你可以退出此命令或让此终端运行以进行进一步测试。下一步是为 Kafka 消费者流程,打开一个新终端。

第 7 步 – 使用 Kafka Consumer 接收消息

Kafka 还有一个命令行使用者,它从 Kafka 集群中读取数据并将消息打印到标准输出。
  1. bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --from-beginning --topic testTopic
  2. Welcome to kafka
  3. This is my first topic
现在,如果你仍在另一台设备上运行 Kafka Producer(第 6 步)。你所要做的就是在该生产者的设备上输入文本。它会立即显示在消费者终端上。请在下面查看 Kafka 生产者和消费者的屏幕截图。

在 Ubuntu 20.04 LTS 上安装 Apache Kafka - 图1

参考

怎样在Ubuntu 20.04上安装Apache Kafka

Kafka 的使用可以参考下面的文章:

Kafka 常用命令总结