常用命令
-----------------------------------
#端口修改
vi /opt/zookeeper/bin/../conf/zoo.cfg
#啟動(dòng)
/opt/zookeeper/bin/zkServer.sh stop
/opt/zookeeper/bin/zkServer.sh start
#校驗(yàn)
jps
#kafka 發(fā)送端口修改
vi /opt/kafka/config/server.properties
-----------------------------------
#端口修改
vi /opt/zookeeper/bin/../conf/zoo.cfg
#啟動(dòng)
/opt/zookeeper/bin/zkServer.sh stop
/opt/zookeeper/bin/zkServer.sh start
#校驗(yàn)
jps
#啟動(dòng)kafka
cd /opt/kafka
bin/kafka-server-start.sh config/server.properties
#kafka 發(fā)送端口修改
vi /opt/kafka/config/server.properties
#發(fā)送消息
/opt/kafka/bin/kafka-console-producer.sh --broker-list 10.64.79.61:9002 --topic test
#接受消息
/opt/kafka/bin/kafka-console-consumer.sh --zookeeper 10.10.10.10:8444 --topic test --from-beginning
/opt/kafka/bin/kafka-console-consumer.sh --bootstrap-server 10.10.10.10:9092 --topic test --from-beginning
-----------------------------------
#發(fā)送消息
/opt/kafka/bin/kafka-console-producer.sh --broker-list 10.10.10.10:9002 --topic test
#接聽消息
/opt/kafka/bin/kafka-console-consumer.sh --zookeeper 10.10.10.10:8444 --topic test --from-beginning
/opt/kafka/bin/kafka-console-consumer.sh --bootstrap-server 10.10.10.10:9092 --topic test --from-beginning
-----------------------------------
最近有一個(gè)項(xiàng)目需要用到kafka分布式訂閱發(fā)布消息系統(tǒng),于是抽空的時(shí)候?qū)W習(xí)了一下關(guān)于kafka的一些事肋联,同樣在這里記錄相關(guān)的筆記威蕉。最開始當(dāng)然就是環(huán)境搭建。
kafka是什么橄仍?
這當(dāng)然是最開始的一個(gè)問題韧涨。
kafka是一個(gè)分布式消息系統(tǒng),由LinkedIn使用Scala編寫侮繁,用作LinkedIn的活動(dòng)流(Activity Stream)和運(yùn)營數(shù)據(jù)處理管道(Pipeline)的基礎(chǔ)虑粥,具有高水平擴(kuò)展和高吞吐量。目前已經(jīng)被多家不同類型的公司作為多種類型的數(shù)據(jù)管道和消息系統(tǒng)使用了宪哩。
而且越來越多的開源式分布處理系統(tǒng)都支持和kafka集成哦娩贷,比如Flume,Storm锁孟,Spark等彬祖。
目前幾種分布式隊(duì)列的對比:
zookeeper的環(huán)境部署
kafka是由zookeeper管理的,那么kafka的部署需要在zookeeper安裝好之后進(jìn)行品抽。因此我們先來看看zookeeper如何來搭建環(huán)境涧至。
首先到zookeeper的官網(wǎng)下載zookeeper,這里我選擇的是zookeeper 3.4.8桑包。
安裝zookeeper很簡單南蓬,就是解壓,然后放到該放的目錄里:
tar -zxvf zookeeper-3.4.8.tar.gz
mv zookeeper-3.4.8 /usr/local/zookeeper
然后我們進(jìn)入zookeeper目錄看一看:
cd /usr/local/zookeeper
目錄如下:
和常規(guī)的一樣哑了,bin目錄下是運(yùn)行文件赘方,conf目錄下是配置文件,因此看看conf目錄:
里面有一個(gè)配置例子zoo_sample.cfg弱左,我們借助這個(gè)來配置:
cp zoo_sample.cfg zoo.cfg
用vim進(jìn)入zoo.cfg窄陡,看看里面的內(nèi)容:
可以看到配置文件里面有幾個(gè)參數(shù):
tickTime # 是zookeeper中使用的基本時(shí)間單位, 毫秒值.
initLimit # 連接leader的超時(shí)時(shí)間
syncLimit #
dataDir # 數(shù)據(jù)目錄. 可以是任意目錄.
clientPort # 監(jiān)聽client連接的端口號.
如果是單機(jī)運(yùn)行zookeeper的話,就用上面默認(rèn)的配置就可以了拆火,可以把dataDir給改了跳夭,不讓它存在臨時(shí)目錄:
# 我把它改到存在zookeeper目錄下的data目錄
dataDir=/usr/local/zookeeper/data
然后進(jìn)入zookeeper目錄創(chuàng)建data目錄:
cd /usr/local/zookeeper
mkdir data
cd data
# 創(chuàng)建一個(gè)myid文件
vim myid
不過一般來說涂圆,用起來應(yīng)該是在集群環(huán)境中。因此我們需要在zoo.cfg中還要加上如下內(nèi)容(假如說有三臺):
server.1=zoo1:2888:3888
server.2=zoo2:2888:3888
server.3=zoo3:2888:3888
集群環(huán)境下需要將zookeeper拷貝到各個(gè)結(jié)點(diǎn)上:
scp -r -r zookeeper/
然后就可以運(yùn)行zookeeper了(每一個(gè)節(jié)點(diǎn)都要運(yùn)行哦):
bin/zkServer.sh start
可以用jps看看:
kafka的環(huán)境部署
zookeeper搭建完畢后币叹,就可以開始kafka的部署了润歉。同樣,到kafka的官網(wǎng)下載kafka的安裝包颈抚,這里選擇的是kafka_2.11-0.9.0.1踩衩。
一樣先來個(gè)單機(jī)版的。贩汉。
解壓文件驱富,然后將它移動(dòng)到合適的文件夾中,一般放/usr/local中:
tar -xvf kafka_2.11-0.9.0.1.tgz
mv kafka_2.11-0.9.0.1 /usr/local/kafka
接著進(jìn)入相應(yīng)目錄:
cd /usr/local/kafka
目錄結(jié)構(gòu)還是那么個(gè)結(jié)構(gòu)匹舞,大同小異褐鸥,以名字來看,bin也是執(zhí)行目錄赐稽,config就是配置文件的目錄了晶疼。
因此可以得知,我們需要進(jìn)行配置kafka又憨。
那么就來配置一下翠霍,一般來說就配置config目錄下的server.properties。
vim config/server.properties
主要涉及到集群中的配置蠢莺。比如broker.id寒匙、zookeeper.connect等等,單機(jī)就默認(rèn)的就行了躏将,默認(rèn)broker.id=0锄弱。如果有其他的節(jié)點(diǎn),每臺節(jié)點(diǎn)的broker.id不能一樣哦祸憋。
然后就可以啟動(dòng)kafka了会宪,同樣在bin里面。在啟動(dòng)了zookeeper的情況下啟動(dòng)kafka:
bin/kafka-server-start.sh config/server.properties
啟動(dòng)后可以來測試測試蚯窥,打開另一個(gè)終端掸鹅,創(chuàng)建一個(gè)叫“hello”的topic:
bin/kafka-topics.sh --create --zookeeper 10.10.10.10:8444 --replication-factor 1 --partitions 1 --topic hello
查看一下topic列表:
bin/kafka-topics.sh --list --zookeeper 10.10.10.10:8444
有了topic之后,我們就可以作為生產(chǎn)者來生產(chǎn)消息了拦赠,這里因?yàn)槭菃螜C(jī)巍沙,也只有用本機(jī)當(dāng)生產(chǎn)者了:
bin/kafka-console-producer.sh --broker-list 10.10.10.10:9002 --topic test
這時(shí)可以在終端中輸入文本消息。我們再在另一個(gè)終端里開啟消費(fèi)者來消費(fèi)消息(0.10版本以后命令就不同了荷鼠,官網(wǎng)上有新的命令):
[work@-XXX kafka]$ /home/work/.jumbo/opt/kafka/bin/kafka-console-producer.sh --broker-list 10.10.10.10:9002 --topic test
>1213 adfa
>dfasf afaf
>aasffadffads
>fasdfasfas
>
這樣就可以看到效果了呢句携。
[work@-XXX kafka]$ /home/work/.jumbo/opt/kafka/bin/kafka-console-consumer.sh --bootstrap-server 10.10.10.10:9002 --topic test --from-beginning
1213 adfa
dfasf afaf
aasffadffads
fasdfasfas
...
其它的比如設(shè)置多broker的集群啊,可以看官方文檔的快速開始(因?yàn)橛玫陌姹臼?.9的允乐,粘貼的網(wǎng)址就是0.9.0的文檔):http://kafka.apache.org/090/documentation.html#quickstart
作者:[MrBryan]
鏈接:http://www.reibang.com/p/745fbbd641a7
來源:簡書
簡書著作權(quán)歸作者所有矮嫉,任何形式的轉(zhuǎn)載都請聯(lián)系作者獲得授權(quán)并注明出處削咆。