Storm使用到的相關(guān)技術(shù)總結(jié)
作者: 大圓那些事 | 文章可以轉(zhuǎn)載,請以超鏈接形式標明文章原始出處和作者信息
網(wǎng)址: http://www.rzrgm.cn/panfeng412/archive/2012/12/16/storm-related-technique-summary.html
Storm作為一個開源的分布式實時流計算框架,其內(nèi)部實現(xiàn)使用了一些常用的技術(shù),這里是對這些技術(shù)及其在Storm中作用的概括介紹。以此為基礎(chǔ),后續(xù)再深入了解Storm的內(nèi)部實現(xiàn)細節(jié)。
1. Zookeeper集群
Zookeeper是一個針對大型分布式系統(tǒng)的可靠協(xié)調(diào)服務(wù)系統(tǒng),其采用類似Unix文件系統(tǒng)樹形層次結(jié)構(gòu)的數(shù)據(jù)模型(如:/zoo/a,/zoo/b),節(jié)點內(nèi)可存儲少量數(shù)據(jù)(<1M,當節(jié)點存儲大數(shù)據(jù)量時,實際應(yīng)用中可能出現(xiàn)同步問題)。
Zookeepr的高可靠性服務(wù)是通過配置Zookeeper集群實現(xiàn)的,官方建議Zookeeper集群至少包含3個節(jié)點,每個節(jié)點上存儲一份數(shù)據(jù),主節(jié)點掛掉后可以重新選取一個節(jié)點作為主節(jié)點。只要保證集群內(nèi)有一半以上的節(jié)點存活,集群就可對外提供服務(wù)。
Zookeeper支持的操作類型有:
(1)創(chuàng)建樹節(jié)點znode;
(2)刪除樹節(jié)點znode;
(3)讀取樹節(jié)點znode的內(nèi)容和其子節(jié)點的內(nèi)容;
(4)當節(jié)點內(nèi)容發(fā)生變化或子節(jié)點增刪時觸發(fā)消息通知更新消息;
(5)支持瞬時節(jié)點(EPHEMERAL),創(chuàng)建節(jié)點的進程退出后節(jié)點自動被刪除。
Storm中使用Zookeeper主要用于Storm集群各節(jié)點的分布式協(xié)調(diào)工作,具體功能如下:
(1)存儲客戶端提供的topology任務(wù)信息,nimbus負責將任務(wù)分配信息寫入Zookeeper,supervisor從Zookeeper上讀取任務(wù)分配信息;
(2)存儲supervisor和worker的心跳(包括它們的狀態(tài)),使得nimbus可以監(jiān)控整個集群的狀態(tài), 從而重啟一些掛掉的worker;
(3)存儲整個集群的所有狀態(tài)信息和配置信息。
關(guān)于Storm在Zookeeper的詳細目錄結(jié)構(gòu),可參考這里。
2. Thrift服務(wù)框架
3. ZeroMQ消息隊列
4. Java序列化
5. 總結(jié)
以上只是對Storm中所使用到的Zookeeper集群、Thrift服務(wù)框架、ZeroMQ消息隊列、Java序列化技術(shù)及其在Storm中的應(yīng)用情況的簡單介紹,后續(xù)再進一步結(jié)合Storm的源碼進行深入分析。以上內(nèi)容,如果不對之處,歡迎大家指正。
浙公網(wǎng)安備 33010602011771號