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

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

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

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

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

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

Storm作為一個(gè)開(kāi)源的分布式實(shí)時(shí)流計(jì)算框架,其內(nèi)部實(shí)現(xiàn)使用了一些常用的技術(shù),這里是對(duì)這些技術(shù)及其在Storm中作用的概括介紹。以此為基礎(chǔ),后續(xù)再深入了解Storm的內(nèi)部實(shí)現(xiàn)細(xì)節(jié)。

1. Zookeeper集群

Zookeeper是一個(gè)針對(duì)大型分布式系統(tǒng)的可靠協(xié)調(diào)服務(wù)系統(tǒng),其采用類似Unix文件系統(tǒng)樹(shù)形層次結(jié)構(gòu)的數(shù)據(jù)模型(如:/zoo/a,/zoo/b),節(jié)點(diǎn)內(nèi)可存儲(chǔ)少量數(shù)據(jù)(<1M,當(dāng)節(jié)點(diǎn)存儲(chǔ)大數(shù)據(jù)量時(shí),實(shí)際應(yīng)用中可能出現(xiàn)同步問(wèn)題)。

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

Zookeeper支持的操作類型有:

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

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

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

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

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

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

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

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

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

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

2. Thrift服務(wù)框架

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

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

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

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

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

3. ZeroMQ消息隊(duì)列

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

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

4. Java序列化

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

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

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

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

5. 總結(jié)

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

    相關(guān)評(píng)論

    閱讀本文后您有什么感想? 已有人給出評(píng)價(jià)!

    • 8 喜歡喜歡
    • 3 頂
    • 1 難過(guò)難過(guò)
    • 5 囧
    • 3 圍觀圍觀
    • 2 無(wú)聊無(wú)聊

    熱門評(píng)論

    最新評(píng)論

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

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

    沒(méi)有數(shù)據(jù)