在本教程中,我們將學(xué)習(xí)如何在基于Ubuntu的環(huán)境中安裝開(kāi)源Apache Kafka平臺(tái)以及Java SDK。
介紹
Apache Kafka是一個(gè)免費(fèi)的開(kāi)源流處理軟件平臺(tái),由Apache軟件基金會(huì)用Scala編寫(xiě)。它是一種分布式消息代理,專(zhuān)門(mén)用于有效處理大量實(shí)時(shí)信息。與其他消息代理系統(tǒng)(如ActiveMQ和RabbitMQ)相比,Apache Kafka具有更高吞吐量。Apache Kafka基于提交日志,允許用戶訂閱并將數(shù)據(jù)發(fā)布到任意數(shù)量的系統(tǒng)或?qū)崟r(shí)應(yīng)用程序。
Apache Kafka可以部署在單個(gè)Web服務(wù)器上,也可以部署在分布式集群環(huán)境中。Apache Kafka有四個(gè)主要的API:Producer API,Consumer API,Connector API和Streams API。
特征:
- 支持并行數(shù)據(jù)加載到Hadoop;
- 高吞吐量,即便使用適中的硬件,也能支持每秒數(shù)十萬(wàn)條消息;
- 持久的消息傳遞與O(1)磁盤(pán)結(jié)構(gòu),提供穩(wěn)定的時(shí)間性能,即使有數(shù)TB的存儲(chǔ)消息;
- 分布式系統(tǒng)可輕松擴(kuò)展,無(wú)需停機(jī)。
本教程要求
- 安裝Ubuntu 16.04服務(wù)器的云ECS平臺(tái);
- 配置靜態(tài)IP地址192.168.0.103;
- 在服務(wù)器上設(shè)置Root密碼。
啟動(dòng)云ECS實(shí)例
首先,登錄云ECS控制臺(tái),你可以選擇喜歡的云平臺(tái)。創(chuàng)建一個(gè)新的ECS實(shí)例,選擇Ubuntu 16.04作為具有至少2GB RAM的操作系統(tǒng)。 連接到ECS實(shí)例并以root用戶身份登錄。
登錄到Ubuntu 16.04實(shí)例后,運(yùn)行以下命令以使用最新的可用軟件包更新基本系統(tǒng):
apt-get update -y
安裝Java
Apache Kafka需要Java運(yùn)行時(shí)環(huán)境,因此需要在系統(tǒng)中安裝最新版本的Java。默認(rèn)情況下,Ubuntu 16.04存儲(chǔ)庫(kù)中不提供最新版本的Java。因此,我們需要將Java存儲(chǔ)庫(kù)添加到系統(tǒng)中,可以通過(guò)運(yùn)行以下命令來(lái)執(zhí)行此操作:
add-apt-repository ppa:webupd8team/java
接下來(lái),通過(guò)運(yùn)行以下命令更新存儲(chǔ)庫(kù)并安裝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維護(hù)配置信息,提供分布式同步,命名和提供組服務(wù)。因此,我們需要將Zookeeper安裝到系統(tǒng)中,可以通過(guò)運(yùn)行以下命令來(lái)安裝它:
apt-get install zookeeperd -y
默認(rèn)情況下,Zookeeper偵聽(tīng)端口2181,可以通過(guò)運(yùn)行以下命令來(lái)檢查它:
netstat -nlpt | grep ‘:2181’
你應(yīng)該可以看到以下輸出:
tcp6 0 0 :::2181 :::* LISTEN
安裝Apache Kafka
首先,你需要從Apache網(wǎng)站下載最新版本的Kafka,可以通過(guò)運(yùn)行以下命令來(lái)下載:
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
接下來(lái),將解壓縮目錄復(fù)制到/ opt:
cp -r kafka_2.12-1.1.0 /opt/Kafka
通過(guò)運(yùn)行以下腳本啟動(dòng)Kafka服務(wù)器:
/opt/Kafka/bin/kafka-server-start.sh /opt/Kafka/config/server.properties
你應(yīng)該可以看到以下輸出:
[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服務(wù)器正在偵聽(tīng)端口9092。
測(cè)試Apache Kafka
現(xiàn)在,通過(guò)運(yùn)行以下命令,使用單個(gè)分區(qū)和僅一個(gè)副本創(chuàng)建名為T(mén)opic1的第一個(gè)主題:
/opt/Kafka/bin/kafka-topics.sh –create –zookeeper localhost:2181 –replication-factor 1 –partitions 1 –topic Topic1
應(yīng)該看到以下輸出:
Created topic “Topic1”.
現(xiàn)在,你可以通過(guò)運(yùn)行以下命令在Kafka上查看已創(chuàng)建的主題:
/opt/Kafka/bin/kafka-topics.sh –list –zookeeper localhost:2181
應(yīng)該可以看到以下輸出:
Topic1
現(xiàn)在,使用以下命令將示例消息發(fā)布到名為T(mén)opic1的Apache kafka主題:
/opt/Kafka/bin/kafka-console-producer.sh –broker-list localhost:9092 –topic Topic1
>>Hello Kafka
>How R You
>Ok
>
接下來(lái),運(yùn)行Kafka consumer命令從Kafka集群讀取數(shù)據(jù)并將消息顯示到標(biāo)準(zhǔn)輸出:
/opt/Kafka/bin/kafka-console-consumer.sh –zookeeper localhost:2181 –topic Topic1 –from-beginning
以下輸出應(yīng)該可以看到發(fā)布的消息:
Hello Kafka
How R You
OK
下面關(guān)于Kafka的文章您也可能喜歡,不妨參考下:
CentOS 7.2部署Elasticsearch+Kibana+Zookeeper+Kafka http://www.linuxidc.com/Linux/2016-11/137636.htm
CentOS 7下安裝Logstash ELK Stack 日志管理系統(tǒng) http://www.linuxidc.com/Linux/2016-08/134165.htm
Kafka集群部署與配置手冊(cè) http://www.linuxidc.com/Linux/2017-02/141037.htm
CentOS 7下Kafka集群安裝 http://www.linuxidc.com/Linux/2017-01/139734.htm
CentOS 7下安裝Kafka單機(jī)版 http://www.linuxidc.com/Linux/2017-01/139732.htm
CentOS7.0安裝配置Kafka集群 http://www.linuxidc.com/Linux/2017-06/144951.htm
Apache Kafka 2.3 發(fā)布,大數(shù)據(jù)分布式流式平臺(tái) http://www.sfodin.cn/Linux/2019-06/159175.htm
Kafka單機(jī)環(huán)境搭建簡(jiǎn)記 http://www.sfodin.cn/Linux/2019-03/157651.htm