西西軟件下載最安全的下載網(wǎng)站、值得信賴的軟件下載站!

首頁編程開發(fā)java → Storm分布式實(shí)時流計算框架相關(guān)技術(shù)總結(jié)

Storm分布式實(shí)時流計算框架相關(guān)技術(shù)總結(jié)

相關(guān)軟件相關(guān)文章發(fā)表評論 來源:西西整理時間:2012/12/16 12:10:14字體大。A-A+

作者:西西點(diǎn)擊:28次評論:0次標(biāo)簽: 分布式

  • 類型:編程控件大小:396KB語言:中文 評分:5.0
  • 標(biāo)簽:
立即下載

Storm作為一個開源的分布式實(shí)時流計算框架,其內(nèi)部實(shí)現(xiàn)使用了一些常用的技術(shù),這里是對這些技術(shù)及其在Storm中作用的概括介紹。以此為基礎(chǔ),后續(xù)再深入了解Storm的內(nèi)部實(shí)現(xiàn)細(xì)節(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é)點(diǎn)內(nèi)可存儲少量數(shù)據(jù)(<1M,當(dāng)節(jié)點(diǎn)存儲大數(shù)據(jù)量時,實(shí)際應(yīng)用中可能出現(xiàn)同步問題)。

Zookeepr的高可靠性服務(wù)是通過配置Zookeeper集群實(shí)現(xiàn)的,官方建議Zookeeper集群至少包含3個節(jié)點(diǎn),每個節(jié)點(diǎn)上存儲一份數(shù)據(jù),主節(jié)點(diǎn)掛掉后可以重新選取一個節(jié)點(diǎn)作為主節(jié)點(diǎn)。只要保證集群內(nèi)有一半以上的節(jié)點(diǎn)存活,集群就可對外提供服務(wù)。

Zookeeper支持的操作類型有:

(1)創(chuàng)建樹節(jié)點(diǎn)znode;

(2)刪除樹節(jié)點(diǎn)znode;

(3)讀取樹節(jié)點(diǎn)znode的內(nèi)容和其子節(jié)點(diǎn)的內(nèi)容;

(4)當(dāng)節(jié)點(diǎn)內(nèi)容發(fā)生變化或子節(jié)點(diǎn)增刪時觸發(fā)消息通知更新消息;

(5)支持瞬時節(jié)點(diǎn)(EPHEMERAL),創(chuàng)建節(jié)點(diǎn)的進(jìn)程退出后節(jié)點(diǎn)自動被刪除。

Storm中使用Zookeeper主要用于Storm集群各節(jié)點(diǎn)的分布式協(xié)調(diào)工作,具體功能如下:

(1)存儲客戶端提供的topology任務(wù)信息,nimbus負(fù)責(zé)將任務(wù)分配信息寫入Zookeeper,supervisor從Zookeeper上讀取任務(wù)分配信息;

(2)存儲supervisor和worker的心跳(包括它們的狀態(tài)),使得nimbus可以監(jiān)控整個集群的狀態(tài), 從而重啟一些掛掉的worker;

(3)存儲整個集群的所有狀態(tài)信息和配置信息。

關(guān)于Storm在Zookeeper的詳細(xì)目錄結(jié)構(gòu),可參考這里。

2. Thrift服務(wù)框架

Thrift是一個跨語言的可擴(kuò)展的服務(wù)框架,它通過一個中間語言(IDL,接口定義語言)來定義RPC的接口和數(shù)據(jù)類型,然后通過一個編譯器生成RPC客戶端和服務(wù)器通信的無縫跨編程語言。

Storm中Thrift的應(yīng)用場景:

(1)客戶端向nimbus提交topology任務(wù);

(2)supervisor從nimbus下載topology任務(wù)(代碼和序列化文件);

(3)storm ui從nimbus獲取topology運(yùn)行的統(tǒng)計信息。

3. ZeroMQ消息隊列

ZeroMQ是一個基于消息的嵌入式網(wǎng)絡(luò)編程庫,可作為并發(fā)框架連接多個應(yīng)用程序,支持N-to-N的連接,多種工作模式(Request-reply,Publish-subscribe,Pipeline等),支持多種語言,ZeroMQ使得編寫高性能網(wǎng)絡(luò)應(yīng)用程序極為簡單。

Storm中ZeroMQ的應(yīng)用場景:Spout與Bolt、Bolt與Bolt之間tuple消息的傳輸。

4. Java序列化

Java序列化技術(shù)可以實(shí)現(xiàn)將Java對象保存為二進(jìn)制文件,而反序列化過程則可以在另一個Java進(jìn)程中將此二進(jìn)制文件恢復(fù)為Java對象,其缺點(diǎn)在于不能很好的解決版本變化。

Storm中Java序列化的應(yīng)用場景:

(1)客戶端提交topology任務(wù)后,Storm將topology任務(wù)序列化并發(fā)送給nimbus;

(2)supervisor從Zookeeper取得任務(wù)信息后,從nimbus下載序列化文件和jar包,啟動worker進(jìn)程并反序列化得到提交任務(wù)時的topology對象。

5. 總結(jié)

以上只是對Storm中所使用到的Zookeeper集群、Thrift服務(wù)框架、ZeroMQ消息隊列、Java序列化技術(shù)及其在Storm中的應(yīng)用情況的簡單介紹,后續(xù)再進(jìn)一步結(jié)合Storm的源碼進(jìn)行深入分析。以上內(nèi)容,如果不對之處,歡迎大家指正。

    相關(guān)評論

    閱讀本文后您有什么感想? 已有人給出評價!

    • 8 喜歡喜歡
    • 3 頂
    • 1 難過難過
    • 5 囧
    • 3 圍觀圍觀
    • 2 無聊無聊

    熱門評論

    最新評論

    發(fā)表評論 查看所有評論(0)

    昵稱:
    表情: 高興 可 汗 我不要 害羞 好 下下下 送花 屎 親親
    字?jǐn)?shù): 0/500 (您的評論需要經(jīng)過審核才能顯示)
    推薦文章

    沒有數(shù)據(jù)