德陽(yáng)企業(yè)品牌網(wǎng)站建設(shè)seo網(wǎng)站推廣公司
在本指南中,我們將逐步演示如何在 Ubuntu 22.04 上安裝 Apache Kafka。
在大數(shù)據(jù)中,數(shù)以百萬(wàn)計(jì)的數(shù)據(jù)源生成了大量的數(shù)據(jù)記錄流,這些數(shù)據(jù)源包括社交媒體平臺(tái)、企業(yè)系統(tǒng)、移動(dòng)應(yīng)用程序和物聯(lián)網(wǎng)設(shè)備等。如此龐大的數(shù)據(jù)帶來(lái)的主要挑戰(zhàn)有兩個(gè)方面:高效的數(shù)據(jù)收集和分析。為了克服這些挑戰(zhàn),您需要一個(gè)可靠且健壯的消息傳遞系統(tǒng)。
Apache Kafka?由 Apache Foundation 開(kāi)發(fā),用 Java 和 Scala 編寫(xiě)是開(kāi)源分布式 pub/sub(發(fā)布訂閱)事件處理大量數(shù)據(jù)流平臺(tái)。它也允許您將消息從一個(gè)點(diǎn)傳輸?shù)搅硪稽c(diǎn)。它與 Zookeeper 同步服務(wù)一起工作,并與 Apache Spark 無(wú)縫集成,用于分析和處理大規(guī)模數(shù)據(jù)。
與其他消息傳遞系統(tǒng)相比,Apache Kafka 提供了更好的吞吐量、固有的容錯(cuò)能力和復(fù)制能力,這使其成為企業(yè)消息處理應(yīng)用程序的絕佳選擇。 包括 Netflix、微軟和 AirBnB 等頂級(jí)公司都有使用 Apache Kafka 服務(wù)。
必備條件
- Pre Installed Ubuntu 22.04
- Sudo User with Admin Rights
- Internet Connectivity
(1) 安裝 OpenJDK
由于 Apache Kafka 是用 Java 編寫(xiě)的,所以安裝 Java 是一個(gè)先決條件,先更新包索引。
$ sudo apt update
接下來(lái),安裝 OpenJDK 11,它是 Java 標(biāo)準(zhǔn)版平臺(tái)的免費(fèi)開(kāi)源實(shí)現(xiàn)。
$ sudo apt install openjdk-11-jdk -y
Install-Openjdk11-for-kafka-Ubuntu
接下來(lái),查看 java 版本。
$ java -version
Check-Java-Version-Kafka-Ubuntu
(2) 安裝 Apache Kafka
使用如下命令下載 Apache Kafka
$ wget https://archive.apache.org/dist/kafka/3.2.3/kafka_2.13-3.2.3.tgz
Download-Apache-Kafka-Wget-Command-Ubuntu
解壓下載的文件
$ tar xvf kafka_2.13-3.2.3.tgz
解壓后,創(chuàng)建了一個(gè) KAFKA_2.12-3.5.0 的目錄。將此目錄移至 /usr/local 目錄,并將其重命名為 kafka。
$ sudo mv kafka_2.13-3.2.3 /usr/local/kafka
Move-Kafka-Binary-user-local-ubuntu
(3) 創(chuàng)建 Kafka 和 ZooKeeper Systemd 單元文件
在這一步中,我們將為 Kafka 和 ZooKeeper 服務(wù)創(chuàng)建 systemd 單元文件。這將允許您使用 systemctl 命令輕松地管理服務(wù)。
使用 nano 編輯器創(chuàng)建 Zookeeper systemd 文件
$ sudo nano /etc/systemd/system/zookeeper.service
粘貼以下代碼行,定義 Zookeeper 的 systemd 服務(wù)。
[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
Environment="JAVA_HOME=/usr/local/programs/jdk-8u333-linux-x64/jdk1.8.0_333"
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
保存并退出
使用 nano 編輯器創(chuàng)建 Zookeeper systemd 文件
$ sudo nano /etc/systemd/system/kafka.service
粘貼以下代碼行,定義 kafka 的 systemd 服務(wù)。
[Unit]
Description=Apache Kafka Server
Documentation=http://kafka.apache.org/documentation.html
Requires=zookeeper.service[Service]
Type=simple
Environment="JAVA_HOME=/usr/local/programs/jdk-8u333-linux-x64/jdk1.8.0_333"
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
保存并退出
(4) 開(kāi)啟 Kafka 和 ZooKeeper Systemd 服務(wù)
所有 systemd 文件就位后,將所做的更改通知 systemd。
$ sudo systemctl daemon-reload
接下來(lái),開(kāi)啟 Kafka 和 Zookeeper 服務(wù)
$ sudo systemctl start zookeeper
$ sudo systemctl start kafka
查看 Zookeeper 服務(wù)狀態(tài)
$ sudo systemctl status zookeeper
Zookeeper-Service-Status-Ubuntu,查看 Apache Kafka 服務(wù)狀態(tài)
$ sudo systemctl status kafka
Kafka-Service-Status-Ubuntu
(5) 創(chuàng)建 Kafka Topic
安裝了 Kafka 和所有組件后,我們將創(chuàng)建一個(gè) Topic 并嘗試發(fā)送消息。在 Kafka 中,Topic 是用于組織消息的基本單元。每個(gè) Topic 在集群中應(yīng)該有一個(gè)唯一的名稱。主題允許用戶在 Kafka 服務(wù)器之間發(fā)送和讀取數(shù)據(jù)。
你可以在 Kafka 中創(chuàng)建任意數(shù)量的集群。也就是說(shuō),現(xiàn)在讓我們?cè)诒镜刂鳈C(jī)端口 9092 上創(chuàng)建一個(gè)名為 sampleTopic 的Topic,該 Topic 具有單個(gè)復(fù)制因子。
$ cd /usr/local/kafka
$ bin/kafka-topics.sh --create --bootstrap-server localhost:9092 --replication-factor 1 --partitions 1 --topic sampleTopic
在運(yùn)行該命令后,您將得到一個(gè)確認(rèn),表明主題已成功創(chuàng)建。
Created topic sampleTopic
Creating-Topic-Kafka-Server-Ubuntu
As mentioned earlier, you can create as many topics as you can using the same syntax. To check or list the topics created, run the command:
您可以使用相同的語(yǔ)法創(chuàng)建盡可能多的主題。需要查看或列出已創(chuàng)建的主題,使用如下命令
$ bin/kafka-topics.sh --list --bootstrap-server localhost:9092
List-Kafka-Topic-Ubuntu
(6) 發(fā)送和接收消息
在 Kafka 中,生產(chǎn)者是一個(gè)跨不同分區(qū)將數(shù)據(jù)寫(xiě)入主題的應(yīng)用程序。應(yīng)用程序集成 Kafka 客戶端庫(kù),向 Apache Kafka 寫(xiě)入消息。Kafka 客戶端庫(kù)是多種多樣的,適用于各種編程語(yǔ)言,包括 Java、Python 等。
現(xiàn)在讓我們運(yùn)行生成器并在控制臺(tái)上生成一條消息。
$ bin/kafka-console-producer.sh --broker-list localhost:9092 --topic sampleTopic
系統(tǒng)將提示您輸入一些消息。在本例中,我們輸入了幾行代碼。
> Hello World!
> Welcome to Apache Kafka
> This is the` first topic
``
完成后,可以退出或保持終端運(yùn)行。要使用這些消息,請(qǐng)打開(kāi)一個(gè)新終端并運(yùn)行以下命令
$ bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic sampleTopic --from-beginning
您輸入的消息將顯示在終端上,如下所示。