如何在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