在本教程中,我們將學習如何在基於Ubuntu的環境中安裝開源Apache Kafka平臺以及Java SDK。
介紹
Apache Kafka是一個免費的開源流處理軟件平臺,由Apache軟件基金會用Scala編寫。它是一種分佈式消息代理,專門用於有效處理大量實時信息。與其他消息代理系統(如ActiveMQ和RabbitMQ)相比,Apache Kafka具有更高吞吐量。Apache Kafka基於提交日誌,允許用戶訂閱並將數據發佈到任意數量的系統或實時應用程序。
Apache Kafka可以部署在單個Web服務器上,也可以部署在分佈式集群環境中。Apache Kafka有四個主要的API:Producer API,Consumer API,Connector API和Streams API。
特徵:
- 支持並行數據加載到Hadoop;
- 高吞吐量,即便使用適中的硬件,也能支持每秒數十萬條消息;
- 持久的消息傳遞與O(1)磁盤結構,提供穩定的時間性能,即使有數TB的存儲消息;
- 分佈式系統可輕鬆擴展,無需停機。
本教程要求
- 安裝Ubuntu 16.04服務器的雲ECS平臺;
- 配置靜態IP地址192.168.0.103;
- 在服務器上設置Root密碼。
啟動雲ECS實例
首先,登錄雲ECS控制檯,你可以選擇喜歡的雲平臺。創建一個新的ECS實例,選擇Ubuntu 16.04作為具有至少2GB RAM的操作系統。 連接到ECS實例並以root用戶身份登錄。
登錄到Ubuntu 16.04實例後,運行以下命令以使用最新的可用軟件包更新基本系統:
apt-get update -y
安裝Java
Apache Kafka需要Java運行時環境,因此需要在系統中安裝最新版本的Java。默認情況下,Ubuntu 16.04存儲庫中不提供最新版本的Java。因此,我們需要將Java存儲庫添加到系統中,可以通過運行以下命令來執行此操作:
add-apt-repository ppa:webupd8team/java
接下來,通過運行以下命令更新存儲庫並安裝Java:
apt-get install oracle-java8-installer -y
安裝Java後,可以使用以下命令檢查Java版本:
java -version
輸出:
java version "1.8.0_161"
Java(TM) SE Runtime Environment (build 1.8.0_161-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.161-b12, mixed mode)
安裝Zookeeper
Apache Kafka依靠Zookeeper維護配置信息,提供分佈式同步,命名和提供組服務。因此,我們需要將Zookeeper安裝到系統中,可以通過運行以下命令來安裝它:
apt-get install zookeeperd -y
默認情況下,Zookeeper偵聽端口2181,可以通過運行以下命令來檢查它:
netstat -nlpt | grep ':2181'
你應該可以看到以下輸出:
tcp6 0 0 :::2181 :::* LISTEN
安裝Apache Kafka
首先,你需要從Apache網站下載最新版本的Kafka,可以通過運行以下命令來下載:
wget http://redrockdigimark.com/apachemirror/kafka/1.1.0/kafka_2.12-1.1.0.tgz
下載完成後,使用以下命令解壓縮文件:
tar -xvzf kafka_2.12-1.1.0.tgz
接下來,將解壓縮目錄複製到/ opt:
cp -r kafka_2.12-1.1.0 /opt/Kafka
通過運行以下腳本啟動Kafka服務器:
/opt/Kafka/bin/kafka-server-start.sh /opt/Kafka/config/server.properties
你應該可以看到以下輸出:
[2018-05-20 08:13:54,271] INFO [/config/changes-event-process-thread]: Starting (kafka.common.ZkNodeChangeNotificationListener$ChangeEventProcessThread)
[2018-05-20 08:13:54,449] INFO Kafka version : 1.1.0 (org.apache.kafka.common.utils.AppInfoParser)
[2018-05-20 08:13:54,461] INFO Kafka commitId : fdcf75ea326b8e07 (org.apache.kafka.common.utils.AppInfoParser)
[2018-05-20 08:13:54,466] INFO [KafkaServer id=0] started (kafka.server.KafkaServer)
Kafka服務器正在偵聽端口9092。
測試Apache Kafka
現在,通過運行以下命令,使用單個分區和僅一個副本創建名為Topic1的第一個主題:
/opt/Kafka/bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic Topic1
應該看到以下輸出:
Created topic "Topic1".
現在,你可以通過運行以下命令在Kafka上查看已創建的主題:
/opt/Kafka/bin/kafka-topics.sh --list --zookeeper localhost:2181
應該可以看到以下輸出:
Topic1
現在,使用以下命令將示例消息發佈到名為Topic1的Apache kafka主題:
/opt/Kafka/bin/kafka-console-producer.sh --broker-list localhost:9092 --topic Topic1
>>Hello Kafka
>How R You
>Ok
>
接下來,運行Kafka consumer命令從Kafka集群讀取數據並將消息顯示到標準輸出:
/opt/Kafka/bin/kafka-console-consumer.sh --zookeeper localhost:2181 --topic Topic1 --from-beginning
以下輸出應該可以看到發佈的消息:
Hello Kafka
How R You
OK
閱讀更多 IT168企業級 的文章