剛剛甩了自己幾個(gè)大嘴巴子,讓自己好好靜一靜膳音。不多說(shuō)了,重新整理下Storm的簡(jiǎn)介。按下自己看啥都難受的心廊佩。
一缤至、Apache Storm
為何要學(xué)Storm
- Storm雖然不是流處理里面最好的(Flink已經(jīng)青出于藍(lán)而勝于藍(lán)了碎绎,還有阿里更勝一籌的Blink)略步,但是絕對(duì)是入門的關(guān)鍵。
- 明晰自己的目的:低延時(shí)盯滚、無(wú)窮數(shù)據(jù)踢械、持續(xù)計(jì)算,這是我們應(yīng)用流處理的原由魄藕。列舉一個(gè)最最簡(jiǎn)單的例子:屏蔽詞内列。
支持平臺(tái)
原先只支持Unix兼容的操作系統(tǒng)上,0.9.1版本后同時(shí)兼容Windows
技術(shù)棧介紹
Java和Clojure + Python
而因?yàn)镴NI的原因背率,其實(shí)Storm的組件(spout和bolt)都可以使用其他任意語(yǔ)言進(jìn)行開發(fā)话瞧。
環(huán)境
Storm開發(fā)環(huán)境裝配詳見《原生騰訊云centos7.5 Apache Storm搭建指南
》(備注:為了降低配置環(huán)境時(shí),因?yàn)闄?quán)限寝姿、目錄等影響交排,游魚默認(rèn)用的是root用戶,并且關(guān)閉了防火墻饵筑。但是有關(guān)問(wèn)題還是會(huì)提到的埃篓,只要注意一下就好了。另外./指的是zookeeper的根目錄)
二根资、理念
- Input data source:數(shù)據(jù)源
- Spout:流的源架专,通過(guò)編寫Spout以從數(shù)據(jù)源讀取數(shù)據(jù)
- Bolt:邏輯處理單元,Spout將數(shù)據(jù)傳到Bolt和Bolt的過(guò)程玄帕,并產(chǎn)生新的數(shù)據(jù)流部脚,Bolt可以進(jìn)行過(guò)濾、聚合桨仿,并與數(shù)據(jù)源和數(shù)據(jù)庫(kù)進(jìn)行交互睛低。
- Tuple:有序元素列表
- Stream:元組的無(wú)序序列
關(guān)鍵詞:拓?fù)浜吐酚?/p>
三、集群架構(gòu)
- Apache Storm的集群架構(gòu)采用了主從設(shè)備模式服傍。
- Zookeeper framework:協(xié)助Supervisor和nimbus交互
- Nimbus:Storm集群的主節(jié)點(diǎn),又稱Master骂铁。而工作節(jié)點(diǎn)分發(fā)數(shù)據(jù)并監(jiān)控故障
- Supervisor:工作節(jié)點(diǎn)又稱Workers吹零,負(fù)責(zé)管理工作進(jìn)程以完成分配的任務(wù)
- Woker process:工作進(jìn)程,其執(zhí)行與特定拓?fù)湎嚓P(guān)的任務(wù)拉庵,其創(chuàng)建執(zhí)行器灿椅,并要求他們完成任務(wù)
- Execute:執(zhí)行器,由工作進(jìn)程產(chǎn)生的單個(gè)進(jìn)程,用于特定的spout與bolt
- Task:任務(wù)茫蛹,實(shí)際執(zhí)行數(shù)據(jù)處理操刀。他是個(gè)spout或bolt
四、工作流程
五婴洼、初步示例
由此魚這邊啟動(dòng)半年前入門的小Topology回味下簡(jiǎn)介骨坑,內(nèi)容其實(shí)就是常見的詞頻統(tǒng)計(jì)。
測(cè)試——Storm下一個(gè)簡(jiǎn)單的JAVA實(shí)現(xiàn)
#開啟Zookeeper
> ./bin/zkServer.sh start
#在主設(shè)備上開啟nimbus柬采、ui
> ./bin/storm nimbus &
> ./bin/storm ui &
#在其他設(shè)備上開啟supervisor
> ./bin/storm supervisor &
#主設(shè)備狀態(tài)
> jps
16290 Jps
1844 nimbus
2020 core
789 QuorumPeerMain
#其他設(shè)備狀態(tài)
> jps
12931 Jps
3349 Supervisor
2079 QuorumPeerMain
#提交Topology
#不知道為什么欢唾,這次魚在主節(jié)點(diǎn)上無(wú)法啟動(dòng)Supervisor,以后再細(xì)看粉捻,推測(cè)是因?yàn)檫@次只啟用了兩個(gè)節(jié)點(diǎn)礁遣,配置上起了沖突
此時(shí)工作就開始了!最好的辦法是進(jìn)入Storm UI一探究竟肩刃。
由上至下分別是:
- Apache Storm總概覽
- 任務(wù)分配節(jié)點(diǎn)狀態(tài)
- 任務(wù)狀態(tài)
- 任務(wù)執(zhí)行節(jié)點(diǎn)狀態(tài)
然后再進(jìn)入任務(wù)內(nèi)部祟霍,一探究竟
由上至下分別是:
- 任務(wù)總概
- 向任務(wù)發(fā)出指令
- 任務(wù)一段時(shí)間內(nèi)的狀態(tài)
- 流的源
- 邏輯處理單元
環(huán)境搭建
安全生產(chǎn)
對(duì)于內(nèi)部環(huán)境來(lái)說(shuō),做物理隔絕就好盈包,只要將zookeeeper的數(shù)據(jù)源對(duì)外開放就好浅碾。當(dāng)然大致還是說(shuō)明下安全生產(chǎn)的基本要求:
- 為storm創(chuàng)建獨(dú)有的用戶,并且開放用戶對(duì)配置文件中data文件夾的全權(quán)续语。
- 對(duì)外開放一下端口(配置文件可以修改垂谢,不要照搬):
- zookeeper:2181,2888,3888
- storm.supervisor:6700,6701,6702,6703
- storm.UI:9090
- storm.nimbus:6627
- 一些其他常用的網(wǎng)絡(luò)通訊端口
- 因?yàn)閟torm的個(gè)個(gè)模塊是設(shè)計(jì)成快速啟動(dòng)和結(jié)束的,也就是說(shuō)他不會(huì)自我恢復(fù)疮茄。所以守護(hù)進(jìn)程也是個(gè)很重要的手段滥朱。