一铛铁、Kafka基礎(chǔ)與搭建

Kafka基礎(chǔ)與搭建


一署恍、先行要事

1.Java環(huán)境

由于kafka是使用Java語(yǔ)言進(jìn)行的開(kāi)發(fā)的應(yīng)用程序崎溃,所以需要提前配置JDK環(huán)境。

2.Zookeeper安裝

kafka的設(shè)計(jì)是通過(guò)Zookeeper進(jìn)行保存集群的元數(shù)據(jù)信息和消費(fèi)者信息盯质。
Zookeeper是kafka的前提依賴袁串。

在kafka的應(yīng)用程序中包含有Zookeeper輕量應(yīng)用,可以通過(guò)腳本直接運(yùn)行呼巷。不過(guò)囱修,也可以通過(guò)單獨(dú)下載進(jìn)行部署安裝Zookeeper應(yīng)用。
①.Zookeeper單機(jī)模式的部署配置如下:

$:  tar xzvf zookeeper-3.4.13.tar.gz
$:  mv zookeeper-3.4.13 /usr/local/zookeeper
$:  vim /usr/local/zookeeper/conf/zoo.cfg
    # 修改zoo.cfg文件中以配置
    tickTime=2000   #Zookeeper心跳時(shí)間【2000】檢測(cè)王悍,單位為毫秒
    dataDir=/var/lib/zookeeper  #默認(rèn)情況下,Zookeeper事務(wù)日志和數(shù)據(jù)快照保存路徑
    clientPort=2181 #客戶端連接服務(wù)器的端口
$:  /usr/local/zookeeper/zkServer.sh start  #啟動(dòng)Zookeeper服務(wù)

②.Zookeeper集群模式的部署配置如下:
Tips:Zookeeper集群成為群組(Ensemble).關(guān)于群組節(jié)點(diǎn)需要注意的是數(shù)量問(wèn)題:

  • 群組包含節(jié)點(diǎn)數(shù)量盡量不要超過(guò)7個(gè)破镰。
    • 由于Zookeeper使用了一致性協(xié)議,當(dāng)節(jié)點(diǎn)數(shù)量超過(guò)7個(gè)時(shí)压储,極可能造成整個(gè)群組的性能下降鲜漩。
  • 群組包含節(jié)點(diǎn)數(shù)量盡量為奇數(shù)個(gè)。
    • 由于Zookeeper的quorum(仲裁)的思想集惋,詳細(xì)見(jiàn)【Zookeeper-quorum】文檔孕似。
$:  vim /usr/local/zookeeper/conf/zoo.cfg
    # 修改zoo.cfg文件中以配置
    tickTime=2000   #Zookeeper心跳時(shí)間【2000】檢測(cè),單位為毫秒
    dataDir=/var/lib/zookeeper  #默認(rèn)情況下,Zookeeper事務(wù)日志和數(shù)據(jù)快照保存路徑
    clientPort=2181 #客戶端連接服務(wù)器的端口
    initLimit=20 #flower最初連接leader時(shí)的超時(shí)值刮刑,單位為tickTime的倍數(shù)
    syncLimit=5 #flower與leader之間進(jìn)行Sync操作的超時(shí)值喉祭,單位為tickTime的倍數(shù)
    
    # server.x=[hostname]:peerPort:leaderPort[:observer]
    # x為群組中服務(wù)器的ID值.它必須是一個(gè)整數(shù)养渴,不過(guò)不一定要從0開(kāi)始,也不要求是連續(xù)的
    # peerPort用于事務(wù)的發(fā)送
    # leaderPort用于leader選舉
    # observe參數(shù)可選泛烙,為了標(biāo)記服務(wù)器是否進(jìn)入觀察者模式
    server.1=hostname1:2888:3888:observer
    server.2=hostname2:2888:3888 
    server.3=hostname3:2888:3888

    # 客戶端只需要通過(guò)clientPort就能連接到群組理卑,
    # 而群組節(jié)點(diǎn)間的通信則需要同時(shí)用到這3個(gè)端口peerPort、leaderPort胶惰、clientPort傻工。

3.Kafka安裝

   # 下載Kafka:http://kafka.apache.org/downloads
   # 將下載的安裝包kafka_2.12-2.1.1.tgz 進(jìn)行解壓操作
$: tar xzvf kafka_2.12-2.1.1.tgz
   
   # 可參考kafka的配置文件參數(shù)說(shuō)明自行配置kafka運(yùn)行參數(shù)(見(jiàn)附表)
   
   # 將kafka放在/usr/local/kafka路徑下
   mv -r kafka_2.12-2.1.1 /usr/local/kafka
   
   # 啟動(dòng)kafka(前提已啟動(dòng)Zookeeper服務(wù))
   /usr/local/kafka/bin/kafka-server-start.sh -demon /usr/local/kafka/config/server.properties

一旦kafka服務(wù)啟動(dòng)完成,就可以針對(duì)kafka服務(wù)進(jìn)行簡(jiǎn)單操作:

  • 創(chuàng)建名稱為test的Topic:
    /usr/local/kafka/bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic test
  • 驗(yàn)證test Topic:
    /usr/local/kafka/bin/kafka-topics.sh --zookeeper localhost:2181 --describe --topic test
# 終端窗口將會(huì)顯示:
Topic:test      PartitionCount:1     ReplicationFactor:1     Configs:
Topic:test      Partition:0          Leader:0                Replicas:0      Isr:0
  • test Topic發(fā)送消息:
    /usr/local/kafka/bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test
# 終端輸入消息孵滞,回車發(fā)送:
Test Message Producer One
Test Message Producer Two
  • test Topic讀取消息:
    /usr/local/kafka/bin/kafka-console-consumer.sh --zookeeper localhost:2181 --topic test --from-beginning
# 終端顯示讀取的消息:
Test Message Producer One
Test Message Producer Two

Consumer 2 messages

附錄:Kafka Broker配置項(xiàng)

配置選項(xiàng) 作用 默認(rèn)值 備注
broker.id 表示在kafka集群中的唯一表示符 0 建議將此ID設(shè)置與主機(jī)名中所包含的唯一性數(shù)字相同
port kafka服務(wù)的端口號(hào) 9092 注意配置1024以下的端口需要root權(quán)限
zookeeper.connect 用于保存broker元數(shù)據(jù)的Zookeeper服務(wù)地址 localhost:2181 其格式為:
hostname:port/path具體含義如下
hostname:Zookeeper服務(wù)器的IP地址或者主機(jī)名
port:Zookeeper服務(wù)的端口號(hào)
/path:此項(xiàng)為可選Zookeeper路徑,作為kafka集群的chroot環(huán)境鸯匹。如果不指定坊饶,默認(rèn)使用根路徑/
log.dir 日志存放路徑 它是一組通過(guò)逗號(hào)隔開(kāi)的路徑本地系統(tǒng)文件路徑。如果指定多個(gè)路徑殴蓬,broker會(huì)通過(guò)最少使用原則匿级,把同一分區(qū)下的日志片段保存到同一個(gè)路徑下。特別注意染厅,broker是向擁有最少數(shù)目分區(qū)的路徑進(jìn)行新增分區(qū)痘绎,并非最小本地磁盤空間的路徑新增分區(qū)。
num.recovery.threads.per.data.dir 處理日志片段線程數(shù) 1 這些線程只是在服務(wù)啟動(dòng)或者關(guān)閉的時(shí)候才會(huì)使用到肖粮,所以可以使用大量的線程來(lái)處理以至于達(dá)到并行操作的目的孤页。特別是包含有大量分區(qū)的服務(wù)器,一旦崩潰涩馆,在進(jìn)行恢復(fù)并行操作時(shí)行施,可以節(jié)省大量時(shí)間。
auto.create.topics.enable 自動(dòng)創(chuàng)建Topic true 默認(rèn)情況下魂那,kafka服務(wù)會(huì)在以下三種情況下自動(dòng)創(chuàng)建Topic:
①.當(dāng)一個(gè)生產(chǎn)者開(kāi)始往topic寫入消息時(shí);
②.當(dāng)一個(gè)消費(fèi)者開(kāi)始從topic讀取消息時(shí);
③.當(dāng)任意一個(gè)客戶端向topic發(fā)送元數(shù)據(jù)請(qǐng)求時(shí)蛾号。
大多時(shí)候這些行為都是非預(yù)期的。根據(jù)kafka的協(xié)議涯雅,一個(gè)topic不先被創(chuàng)建鲜结,是無(wú)法知道此topic是否已經(jīng)存在。如果把此項(xiàng)值改為false活逆,可以通過(guò)顯式的方式創(chuàng)建精刷,不管是手動(dòng)創(chuàng)建還是通過(guò)其他配置的方式。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末划乖,一起剝皮案震驚了整個(gè)濱河市贬养,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌琴庵,老刑警劉巖误算,帶你破解...
    沈念sama閱讀 221,406評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件仰美,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡儿礼,警方通過(guò)查閱死者的電腦和手機(jī)咖杂,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,395評(píng)論 3 398
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)蚊夫,“玉大人诉字,你說(shuō)我怎么就攤上這事≈祝” “怎么了壤圃?”我有些...
    開(kāi)封第一講書(shū)人閱讀 167,815評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)琅轧。 經(jīng)常有香客問(wèn)我伍绳,道長(zhǎng),這世上最難降的妖魔是什么乍桂? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 59,537評(píng)論 1 296
  • 正文 為了忘掉前任冲杀,我火速辦了婚禮,結(jié)果婚禮上睹酌,老公的妹妹穿的比我還像新娘权谁。我一直安慰自己,他們只是感情好憋沿,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,536評(píng)論 6 397
  • 文/花漫 我一把揭開(kāi)白布旺芽。 她就那樣靜靜地躺著,像睡著了一般卤妒。 火紅的嫁衣襯著肌膚如雪甥绿。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 52,184評(píng)論 1 308
  • 那天则披,我揣著相機(jī)與錄音共缕,去河邊找鬼。 笑死士复,一個(gè)胖子當(dāng)著我的面吹牛图谷,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播阱洪,決...
    沈念sama閱讀 40,776評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼便贵,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了冗荸?” 一聲冷哼從身側(cè)響起承璃,我...
    開(kāi)封第一講書(shū)人閱讀 39,668評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎蚌本,沒(méi)想到半個(gè)月后盔粹,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體隘梨,經(jīng)...
    沈念sama閱讀 46,212評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,299評(píng)論 3 340
  • 正文 我和宋清朗相戀三年舷嗡,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了轴猎。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,438評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡进萄,死狀恐怖捻脖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情中鼠,我是刑警寧澤可婶,帶...
    沈念sama閱讀 36,128評(píng)論 5 349
  • 正文 年R本政府宣布,位于F島的核電站援雇,受9級(jí)特大地震影響扰肌,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜熊杨,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,807評(píng)論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望盗舰。 院中可真熱鬧晶府,春花似錦、人聲如沸钻趋。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,279評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)蛮位。三九已至较沪,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間失仁,已是汗流浹背尸曼。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,395評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留萄焦,地道東北人控轿。 一個(gè)月前我還...
    沈念sama閱讀 48,827評(píng)論 3 376
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像拂封,于是被迫代替她去往敵國(guó)和親茬射。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,446評(píng)論 2 359