大数据(11) - kafka的安装与使用
一、Kafka概述
1.Kafka是什么
在流式計(jì)算中,Kafka一般用來(lái)緩存數(shù)據(jù),Storm通過(guò)消費(fèi)Kafka的數(shù)據(jù)進(jìn)行計(jì)算。
1)Apache Kafka是一個(gè)開(kāi)源消息系統(tǒng),由Scala寫(xiě)成。是由Apache軟件基金會(huì)開(kāi)發(fā)的一個(gè)開(kāi)源消息系統(tǒng)項(xiàng)目。
2)Kafka最初是由LinkedIn公司開(kāi)發(fā),并于????? 2011年初開(kāi)源。2012年10月從Apache Incubator畢業(yè)。該項(xiàng)目的目標(biāo)是為處理實(shí)時(shí)數(shù)據(jù)提供一個(gè)統(tǒng)一、高通量、低等待的平臺(tái)。
3)Kafka是一個(gè)分布式消息隊(duì)列。Kafka對(duì)消息保存時(shí)根據(jù)Topic進(jìn)行歸類(lèi),發(fā)送消息者稱(chēng)為Producer,消息接受者稱(chēng)為Consumer,此外kafka集群有多個(gè)kafka實(shí)例組成,每個(gè)實(shí)例(server)成為broker。
?4)無(wú)論是kafka集群,還是producer和consumer都依賴(lài)于zookeeper集群保存一些meta信息,來(lái)保證系統(tǒng)可用性。
?
2.?消息隊(duì)列內(nèi)部實(shí)現(xiàn)原理
(1)點(diǎn)對(duì)點(diǎn)模式(一對(duì)一,消費(fèi)者主動(dòng)拉取數(shù)據(jù),消息收到后消息清除點(diǎn)對(duì)點(diǎn)模型通常是一個(gè)基于拉取或者輪詢(xún)的消息傳送模型,這種模型從隊(duì)列中請(qǐng)求信息,而不是將消息推送到客戶(hù)端。這個(gè)模型的特點(diǎn)是發(fā)送到隊(duì)列的消息被一個(gè)且只有一個(gè)接收者接收處理,即使有多個(gè)消息監(jiān)聽(tīng)者也是如此。
(2)發(fā)布/訂閱模式(一對(duì)多,數(shù)據(jù)生產(chǎn)后,推送給所有訂閱者)發(fā)布訂閱模型則是一個(gè)基于推送的消息傳送模型。發(fā)布訂閱模型可以有多種不同的訂閱者,臨時(shí)訂閱者只在主動(dòng)監(jiān)聽(tīng)主題時(shí)才接收消息,而持久訂閱者則監(jiān)聽(tīng)主題的所有消息,即使當(dāng)前訂閱者不可用,處于離線狀態(tài)。
3. 為什么需要消息隊(duì)列
1)解耦:
允許你獨(dú)立的擴(kuò)展或修改兩邊的處理過(guò)程,只要確保它們遵守同樣的接口約束。
2)冗余:
消息隊(duì)列把數(shù)據(jù)進(jìn)行持久化直到它們已經(jīng)被完全處理,通過(guò)這一方式規(guī)避了數(shù)據(jù)丟失風(fēng)險(xiǎn)。許多消息隊(duì)列所采用的"插入-獲取-刪除"范式中,在把一個(gè)消息從隊(duì)列中刪除之前,需要你的處理系統(tǒng)明確的指出該消息已經(jīng)被處理完畢,從而確保你的數(shù)據(jù)被安全的保存直到你使用完畢。
3)擴(kuò)展性:
因?yàn)橄㈥?duì)列解耦了你的處理過(guò)程,所以增大消息入隊(duì)和處理的頻率是很容易的,只要另外增加處理過(guò)程即可。
4)靈活性 & 峰值處理能力:
在訪問(wèn)量劇增的情況下,應(yīng)用仍然需要繼續(xù)發(fā)揮作用,但是這樣的突發(fā)流量并不常見(jiàn)。如果為以能處理這類(lèi)峰值訪問(wèn)為標(biāo)準(zhǔn)來(lái)投入資源隨時(shí)待命無(wú)疑是巨大的浪費(fèi)。使用消息隊(duì)列能夠使關(guān)鍵組件頂住突發(fā)的訪問(wèn)壓力,而不會(huì)因?yàn)橥话l(fā)的超負(fù)荷的請(qǐng)求而完全崩潰。
5)可恢復(fù)性:
系統(tǒng)的一部分組件失效時(shí),不會(huì)影響到整個(gè)系統(tǒng)。消息隊(duì)列降低了進(jìn)程間的耦合度,所以即使一個(gè)處理消息的進(jìn)程掛掉,加入隊(duì)列中的消息仍然可以在系統(tǒng)恢復(fù)后被處理。
6)順序保證:
在大多使用場(chǎng)景下,數(shù)據(jù)處理的順序都很重要。大部分消息隊(duì)列本來(lái)就是排序的,并且能保證數(shù)據(jù)會(huì)按照特定的順序來(lái)處理。(Kafka保證一個(gè)Partition內(nèi)的消息的有序性)
7)緩沖:
有助于控制和優(yōu)化數(shù)據(jù)流經(jīng)過(guò)系統(tǒng)的速度,解決生產(chǎn)消息和消費(fèi)消息的處理速度不一致的情況。
8)異步通信:
很多時(shí)候,用戶(hù)不想也不需要立即處理消息。消息隊(duì)列提供了異步處理機(jī)制,允許用戶(hù)把一個(gè)消息放入隊(duì)列,但并不立即處理它。想向隊(duì)列中放入多少消息就放多少,然后在需要的時(shí)候再去處理它們。
?
二、Kafka部署
1.成功安裝部署zookeeper
2.解壓
$ tar -zxf ~/softwares/installations/kafka_2.11-0.11.0.2.tgz -C ~/modules/
3.?修改配置文件
vim ~/modules/kafka_2.11-0.11.0.2/config/server.properties 修改以下內(nèi)容broker.id=0delete.topic.enable=true log.dirs=/home/admin/modules/kafka_2.11-0.11.0.2/kafka-logs zookeeper.connect=linux01:2181,linux02:2181,linux03:2181zookeeper.connection.timeout.ms=60000
4.分發(fā)
$ scp -r kafka_2.11-0.11.0.2/ linux02:/home/admin/modules/ $ scp -r kafka_2.11-0.11.0.2/ linux03:/home/admin/modules/
5.修改另外兩臺(tái)機(jī)器的broker.id,3臺(tái)機(jī)器的broker.id分別為0,1,2
6.啟動(dòng)kafka集群(3臺(tái)機(jī)器分別執(zhí)行,必須先把zookeeper啟動(dòng)起來(lái)!!)
$ bin/kafka-server-start.sh config/server.properties
kafka的broker進(jìn)程,是一個(gè)前臺(tái)占用進(jìn)程。如果想后臺(tái)運(yùn)行,則在末尾加上"&"符號(hào)
$ bin/kafka-server-start.sh config/server.properties &?
?
轉(zhuǎn)載于:https://www.cnblogs.com/shifu204/p/9830324.html
總結(jié)
以上是生活随笔為你收集整理的大数据(11) - kafka的安装与使用的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 【学时总结模板时间】◆学时·10 模板
- 下一篇: docker与kuberentes基本概