Apache Kafka是一種流行的分布式消息代理得湘,設(shè)計(jì)用于高效處理大量實(shí)時(shí)數(shù)據(jù)。 Kafka集群不僅具有高度可擴(kuò)展性和容錯(cuò)性领追,而且與其他消息代理(例如ActiveMQ和RabbitMQ)相比慌随,還具有高得多的吞吐量真朗。 雖然它通常用作pub / sub消息傳遞系統(tǒng),但是很多組織也將其用于日志聚合燃领,因?yàn)樗鼮橐寻l(fā)布的消息提供持久存儲(chǔ)士聪。
1.安裝zookeeper
Apache ZooKeeper是一種開源服務(wù),用于協(xié)調(diào)和同步屬于分布式系統(tǒng)的節(jié)點(diǎn)的配置信息猛蔽。 Kafka集群依賴于ZooKeeper來執(zhí)行操作剥悟,例如檢測(cè)失敗的節(jié)點(diǎn)和選擇領(lǐng)導(dǎo)者。
由于ZooKeeper的包是在Ubuntu的默認(rèn)軟件倉(cāng)庫(kù)曼库,使用安裝它apt-get 区岗。
sudo apt-get install zookeeperd
安裝完成后,ZooKeeper將作為后臺(tái)程序自動(dòng)啟動(dòng)凉泄。 默認(rèn)情況下躏尉,它會(huì)偵聽端口2181。
為了確保它是工作后众,通過Telnet連接到它:
telnet localhost 2181
在Telnet提示符處胀糜,鍵入ruok ,然后按ENTER 蒂誉。
如果一切正常教藻,動(dòng)物園管理員會(huì)說imok并結(jié)束Telnet會(huì)話。
2.安裝kafka
這里是下載并解壓縮Kafka二進(jìn)制文件右锨,首先括堤,創(chuàng)建一個(gè)叫做Downloads來存儲(chǔ)所有您的下載。
mkdir -p ~/Downloads
使用wget下載Kafka二進(jìn)制文件。
wget "http://mirror.cc.columbia.edu/pub/software/apache/kafka/0.8.2.1/kafka_2.11-0.8.2.1.tgz" -O ~/Downloads/kafka.tgz
創(chuàng)建一個(gè)目錄叫kafka 悄窃,并切換到該目錄讥电。 這將是Kafka安裝的基本目錄。
mkdir -p ~/kafka && cd ~/kafka
解壓縮您下載使用存檔tar命令轧抗。
tar -xvzf ~/Downloads/kafka.tgz --strip 1
3.配置Kafka Server
下一步是配置Kakfa服務(wù)器恩敌。
打開server.properties使用vim :
vim ~/kafka/config/server.properties
默認(rèn)情況下,Kafka不允許您刪除主題横媚。 要能夠刪除主題纠炮,請(qǐng)?jiān)谖募┪蔡砑右韵滦校?/p>
delete.topic.enable = true
保存文件,并退出vim
4.啟動(dòng)Kafka服務(wù)器
運(yùn)行kafka-server-start.sh使用腳本nohup啟動(dòng)Kafka服務(wù)器(也稱為Kafka經(jīng)紀(jì)人)作為后臺(tái)進(jìn)程是獨(dú)立的shell會(huì)話灯蝴。
nohup ~/kafka/bin/kafka-server-start.sh ~/kafka/config/server.properties > ~/kafka/kafka.log 2>&1 &
等待幾秒鐘恢口,它開始。 你可以肯定穷躁,當(dāng)你看到下面的消息服務(wù)器已成功啟動(dòng)~/kafka/kafka.log :
摘錄自?/ kafka / kafka.log
...
[2017-03-29 06:02:41,736] INFO New leader is 0 (kafka.server.ZookeeperLeaderElector$LeaderChangeListener)
[2017-03-29 06:02:41,776] INFO [Kafka Server 0], started (kafka.server.KafkaServer)
你現(xiàn)在有它在端口9092監(jiān)聽Kafka服務(wù)器耕肩。
5.測(cè)試安裝:
現(xiàn)在讓我們發(fā)布和使用一個(gè)“Hello World”的消息,以確保Kafka服務(wù)器正常運(yùn)作折砸。
要發(fā)布消息看疗,您應(yīng)該創(chuàng)建一個(gè)Kafka生產(chǎn)者。 您可以輕松地創(chuàng)建一個(gè)使用該命令行kafka-console-producer.sh腳本睦授。 它期望Kafka服務(wù)器的主機(jī)名和端口两芳,以及主題名稱作為其參數(shù)。
在下面的輸入發(fā)布字符串“你好去枷,世界”到一個(gè)叫做TutorialTopic話題:
echo "Hello, World" | ~/kafka/bin/kafka-console-producer.sh --broker-list localhost:9092 --topic TutorialTopic > /dev/null
由于主題不存在怖辆,Kafka將自動(dòng)創(chuàng)建。
使用消息删顶,您可以創(chuàng)建使用Kafka消費(fèi)者kafka-console-consumer.sh腳本竖螃。 它期望ZooKeeper服務(wù)器的主機(jī)名和端口,以及主題名稱作為其參數(shù)逗余。
以下命令使用我們發(fā)布到的主題的消息特咆。 注意使用的--from-beginning的標(biāo)志,因?yàn)槲覀円南M(fèi)者開始之前公布的消息录粱,其存在腻格。
~/kafka/bin/kafka-console-consumer.sh --zookeeper localhost:2181 --topic TutorialTopic --from-beginning
如果沒有配置問題,你應(yīng)該看到Hello, World現(xiàn)在在輸出中,如下:
vagrant@vagrant-ubuntu-trusty-64:~/kafka$ ~/kafka/bin/kafka-console-consumer.sh --zookeeper localhost:2181 --topic TutorialTopic --from-beginning
Hello, World
腳本將繼續(xù)運(yùn)行啥繁,等待更多消息發(fā)布到主題菜职。 隨意打開一個(gè)新的終端,并開始一個(gè)制作人發(fā)布更多的消息旗闽。 你應(yīng)該能夠立即在消費(fèi)者的輸出中看到它們酬核。
完成測(cè)試后蜜另,請(qǐng)按CTRL + C停止使用者腳本。