Storm 概念簡介

剛剛甩了自己幾個大嘴巴子,讓自己好好靜一靜。不多說了,重新整理下Storm的簡介。按下自己看啥都難受的心。

一、Apache Storm

為何要學(xué)Storm

  1. Storm雖然不是流處理里面最好的(Flink已經(jīng)青出于藍(lán)而勝于藍(lán)了,還有阿里更勝一籌的Blink),但是絕對是入門的關(guān)鍵。
  2. 明晰自己的目的:低延時、無窮數(shù)據(jù)、持續(xù)計算,這是我們應(yīng)用流處理的原由。列舉一個最最簡單的例子:屏蔽詞。

支持平臺

原先只支持Unix兼容的操作系統(tǒng)上,0.9.1版本后同時兼容Windows

技術(shù)棧介紹

Java和Clojure + Python

而因為JNI的原因,其實Storm的組件(spout和bolt)都可以使用其他任意語言進(jìn)行開發(fā)。

環(huán)境

Storm開發(fā)環(huán)境裝配詳見《原生騰訊云centos7.5 Apache Storm搭建指南
》(備注:為了降低配置環(huán)境時,因為權(quán)限、目錄等影響,游魚默認(rèn)用的是root用戶,并且關(guān)閉了防火墻。但是有關(guān)問題還是會提到的,只要注意一下就好了。另外./指的是zookeeper的根目錄)

二、理念

基礎(chǔ)架構(gòu)
  • Input data source:數(shù)據(jù)源
  • Spout:流的源,通過編寫Spout以從數(shù)據(jù)源讀取數(shù)據(jù)
  • Bolt:邏輯處理單元,Spout將數(shù)據(jù)傳到Bolt和Bolt的過程,并產(chǎn)生新的數(shù)據(jù)流,Bolt可以進(jìn)行過濾、聚合,并與數(shù)據(jù)源和數(shù)據(jù)庫進(jìn)行交互。
  • Tuple:有序元素列表
  • Stream:元組的無序序列

關(guān)鍵詞:拓?fù)浜吐酚?/p>

三、集群架構(gòu)

集群
  • Apache Storm的集群架構(gòu)采用了主從設(shè)備模式。
  • Zookeeper framework:協(xié)助Supervisor和nimbus交互
  • Nimbus:Storm集群的主節(jié)點,又稱Master。而工作節(jié)點分發(fā)數(shù)據(jù)并監(jiān)控故障
  • Supervisor:工作節(jié)點又稱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)生的單個進(jìn)程,用于特定的spout與bolt
  • Task:任務(wù),實際執(zhí)行數(shù)據(jù)處理。他是個spout或bolt

四、工作流程

集群工作流程

五、初步示例

由此魚這邊啟動半年前入門的小Topology回味下簡介,內(nèi)容其實就是常見的詞頻統(tǒng)計。

測試——Storm下一個簡單的JAVA實現(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é)點上無法啟動Supervisor,以后再細(xì)看,推測是因為這次只啟用了兩個節(jié)點,配置上起了沖突

此時工作就開始了!最好的辦法是進(jìn)入Storm UI一探究竟。

節(jié)點架構(gòu)

由上至下分別是:

  • Apache Storm總概覽
  • 任務(wù)分配節(jié)點狀態(tài)
  • 任務(wù)狀態(tài)
  • 任務(wù)執(zhí)行節(jié)點狀態(tài)

然后再進(jìn)入任務(wù)內(nèi)部,一探究竟

任務(wù)簡介

由上至下分別是:

  • 任務(wù)總概
  • 向任務(wù)發(fā)出指令
  • 任務(wù)一段時間內(nèi)的狀態(tài)
  • 流的源
  • 邏輯處理單元

環(huán)境搭建

安全生產(chǎn)

對于內(nèi)部環(huán)境來說,做物理隔絕就好,只要將zookeeeper的數(shù)據(jù)源對外開放就好。當(dāng)然大致還是說明下安全生產(chǎn)的基本要求:

  1. 為storm創(chuàng)建獨有的用戶,并且開放用戶對配置文件中data文件夾的全權(quán)。
  2. 對外開放一下端口(配置文件可以修改,不要照搬):
    • zookeeper:2181,2888,3888
    • storm.supervisor:6700,6701,6702,6703
    • storm.UI:9090
    • storm.nimbus:6627
    • 一些其他常用的網(wǎng)絡(luò)通訊端口
  3. 因為storm的個個模塊是設(shè)計成快速啟動和結(jié)束的,也就是說他不會自我恢復(fù)。所以守護(hù)進(jìn)程也是個很重要的手段。

準(zhǔn)備工作

Zookeeper集群設(shè)置(單例)
Zookeeper集群設(shè)置(集群)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容