如何在Ubuntu 20.04上安装Apache Kafka

Apache Kafka是由Apache Software Foundation开发的开源,分布式事件流平台。 这是用Scala和Java编程语言编写的。 您可以在任何平台支持的Java上安装Kafka。

本教程分步介绍了如何在Ubuntu 20.04 LTS Linux系统上安装Apache Kafka。 您还将学习在Kafka中创建主题以及运行生产者和消费者节点。

先决条件

您必须具有sudo特权帐户,才能访问Ubuntu 20.04 Linux系统。

步骤1 –安装Java

Apache Kafka可以在所有平台支持的Java上运行。 为了在Ubuntu系统上设置Kafka,您需要先安装Java。 众所周知,Oracle Java现在已经可以买到了,因此我们正在使用其开源版本OpenJDK。

执行以下命令,从官方PPA在您的系统上安装OpenJDK。

sudo apt update 
sudo apt install default-jdk

验证当前的活动Java版本。

java --version 

openjdk version "11.0.9.1" 2020-11-04
OpenJDK Runtime Environment (build 11.0.9.1+1-Ubuntu-0ubuntu1.20.04)
OpenJDK 64-Bit Server VM (build 11.0.9.1+1-Ubuntu-0ubuntu1.20.04, mixed mode, sharing)

步骤2 –下载最新的Apache Kafka

从其官方下载网站下载Apache Kafka二进制文件。 您也可以选择附近的任何镜子进行下载。

wget http://www-us.apache.org/dist/kafka/2.7.0/kafka_2.13-2.7.0.tgz

然后解压缩存档文件

tar xzf kafka_2.13-2.7.0.tgz
mv kafka_2.13-2.7.0 /usr/local/kafka

步骤3 –创建Systemd单位文件

现在,您需要为Zookeeper和Kafka服务创建systemd单元文件。 这将帮助您轻松启动/停止Kafka服务。

首先,为Zookeeper创建一个systemd单位文件:

vim /etc/systemd/system/zookeeper.service

并添加以下内容:

[Unit]
Description=Apache Zookeeper server
Documentation=http://zookeeper.apache.org
Requires=network.target remote-fs.target
After=network.target remote-fs.target

[Service]
Type=simple
ExecStart=/usr/local/kafka/bin/zookeeper-server-start.sh /usr/local/kafka/config/zookeeper.properties
ExecStop=/usr/local/kafka/bin/zookeeper-server-stop.sh
Restart=on-abnormal

[Install]
WantedBy=multi-user.target

保存文件并关闭它。

接下来,为Kafka服务创建一个systemd单位文件:

vim /etc/systemd/system/kafka.service

添加以下内容。 确保设置正确 JAVA_HOME 路径(根据系统上安装的Java)。

[Unit]
Description=Apache Kafka Server
Documentation=http://kafka.apache.org/documentation.html
Requires=zookeeper.service

[Service]
Type=simple
Environment="JAVA_HOME=/usr/lib/jvm/java-1.11.0-openjdk-amd64"
ExecStart=/usr/local/kafka/bin/kafka-server-start.sh /usr/local/kafka/config/server.properties
ExecStop=/usr/local/kafka/bin/kafka-server-stop.sh

[Install]
WantedBy=multi-user.target

保存文件并关闭。

重新加载systemd守护程序以应用新更改。

systemctl daemon-reload

步骤4 –启动Kafka和Zookeeper服务

首先,您需要启动ZooKeeper服务,然后再启动Kafka。 使用systemctl命令启动单节点ZooKeeper实例。

sudo systemctl start zookeeper

现在启动Kafka服务器并查看运行状态:

sudo systemctl start kafka
sudo systemctl status kafka

全部完成。 Kafka安装已成功完成。 本教程的部分将帮助您使用Kafka服务器。

步骤5 –在Kafka中创建主题

Kafka提供了多个预构建的Shell脚本来对其进行处理。 首先,使用单个副本和单个副本创建一个名为“ testTopic”的主题:

cd /usr/local/kafka
bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic testTopic

Created topic testTopic.

复制因子描述将创建多少个数据副本。 当我们运行单个实例时,请保持此值为1。

将分区选项设置为要在其之间拆分数据的代理数量。 当我们与单个经纪人一起运行时,请保持此值1。

您可以通过运行与上述相同的命令来创建多个主题。 之后,您可以通过运行以下命令在Kafka上查看创建的主题:

bin/kafka-topics.sh --list --zookeeper localhost:2181

[output]
testTopic

或者,除了手动创建主题外,还可以将代理配置为在发布不存在的主题时自动创建主题。

第6步–在Kafka中发送和接收消息

“生产者”是负责将数据放入我们的卡夫卡的过程。 Kafka带有一个命令行客户端,它将从文件或标准输入中获取输入,并将其作为消息发送到Kafka集群。 默认的Kafka将每一行作为单独的消息发送。

让我们运行生产者,然后在控制台中输入一些消息以发送到服务器。

bin/kafka-console-producer.sh --broker-list localhost:9092 --topic testTopic

>Welcome to kafka
>This is my first topic
>

您可以退出此命令或保持此终端运行以进行进一步测试。 现在,在下一步中打开一个新的终端,进入Kafka客户程序。

步骤7 –使用Kafka Consumer

Kafka还具有一个命令行使用者,可以从Kafka集群中读取数据并在标准输出中显示消息。

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

Welcome to kafka
This is my first topic

现在,如果您仍然在另一个终端上运行Kafka生产者(步骤6)。 只需在该生产者终端上键入一些文本即可。 它会立即在消费者终端上可见。 请参见以下Kafka生产者和消费者的屏幕截图:

如何在Ubuntu 20.04上安装Apache Kafka

结论

本教程帮助您在Ubuntu系统上安装和配置Apache Kafka服务。 此外,您还学习了如何在Kafka服务器中创建一个新主题,并使用Apache Kafka运行示例生产和消费者流程。

Sidebar