這篇文章主要講解了“Storm組件有哪些”,文中的講解內(nèi)容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“Storm組件有哪些”吧!
創(chuàng)新互聯(lián)公司十多年專注成都高端網(wǎng)站建設按需求定制網(wǎng)站服務,為客戶提供專業(yè)的成都網(wǎng)站制作,成都網(wǎng)頁設計,成都網(wǎng)站設計服務;創(chuàng)新互聯(lián)公司服務內(nèi)容包含成都網(wǎng)站建設,微信小程序定制開發(fā),軟件開發(fā),網(wǎng)絡營銷推廣,網(wǎng)絡運營服務及企業(yè)形象設計;創(chuàng)新互聯(lián)公司擁有眾多專業(yè)的高端網(wǎng)站制作開發(fā)團隊,資深的高端網(wǎng)頁設計團隊及經(jīng)驗豐富的架構(gòu)師高端網(wǎng)站策劃團隊;我們始終堅持從客戶的角度出發(fā),為客戶量身訂造網(wǎng)絡營銷方案,解決網(wǎng)絡營銷疑問。
Storm 組件
Storm集群表面上與hadoop集群類似。在hadoop集群上,你可以跑 mapreduce job,而在storm集群上你可以跑各種topology。但其實 mapreduce job 和 topology,他們是非常不一樣的——其中最主要的差別就是,一個Mapreduce job 可以運行結(jié)束,然后一個topology會一直處理信息直到你kill它。
在一個Storm集群有兩種節(jié)點:master node 和 worker nodes。Master node 運行著一個守護進程,叫做"Nimbus",這非常類似于hadoop 1.0時代的 JobTracker。Nimbus負責分發(fā)code,分配task給node,和監(jiān)控。
每個worker node運行著一個守護進程,叫做"Supervisor"。Supervisor監(jiān)聽那些分配給當前node的任務,啟動和終止worker processes(worker process處理那些Nimbus分配給它需要處理的任務)。而每個worker process執(zhí)行一部分的topolgy;一個執(zhí)行中的topology包含了很多worker processes執(zhí)行在集群中。
Nimbus和 Supervisors之間的協(xié)作是通過Zookeeper集群完成的。另外,Nimbus 和 Supervisor是 快速失敗 和 無狀態(tài)化(TODO understand),而所有的狀態(tài)是保存在Zookeeper或者本地磁盤。換而言之,你可以用 kill -9 來殺死 Nimbus 或者 Supervisors,而它們會馬上變回好像什么都沒發(fā)生過一樣。這些設計致使Storm 集群非常穩(wěn)定。(但愿如此,馬上要用到項目中了......)
Topology
在Storm上做實時計算,你需要創(chuàng)建 "Topology"。在Topology中的每個node涵蓋 邏輯處理, nodes間數(shù)據(jù)傳遞依賴等等。
執(zhí)行一個Topology非常簡單。首先, 你需要打包你全部的代碼和依賴到一個jar,然后,你可以執(zhí)行接下來的命令:
storm jar all-my-code.jar backtype.storm.MyTopology arg1 arg2
這命令會執(zhí)行類backtype.storm.MyTopology,并帶入外部參數(shù) arg1和arg2(給main函數(shù)用)。而這個類的main方法會定義topology,并提交給Nimbus。Storm jar會負責連接Nimbus,并上傳這個jar。
由于topology的結(jié)構(gòu)定義是Thrift(facebook 寫的一個夸語言調(diào)用框架)結(jié)構(gòu),同時Nimbus也是也是一個Thrift服務,所以你能創(chuàng)建和提交任何語言寫的topology。
Streams
在Storm里最抽象的是 "stream"。Stream是一個無邊界且序列化的tuples。Storm提供了原語來把一個stream轉(zhuǎn)化成另一個新的stream,且這種轉(zhuǎn)化是分布式的,可靠的。下圖就是Stream的寫照。
Storm提供的這種原語是 spouts 和 bolts。Spouts 和 bolts 都有接口,你需要實現(xiàn)來執(zhí)行你的應用邏輯。
Spout是stream的來源。舉個栗子,一個spout可能讀取tuples從Kestrel隊列中,并且發(fā)射這些數(shù)據(jù)以流的形式。或者說,一個spout會連接Twitter的API 來發(fā)射數(shù)據(jù)流。(對于Storm來說,Spout就是源數(shù)據(jù)的抓取者,負責為整個流式計算提供源源不斷的數(shù)據(jù)流。)
Bolt則是stream的消費者,做一些數(shù)據(jù)處理,同時也可能發(fā)射新的數(shù)據(jù)流。混合復雜的流轉(zhuǎn)化,需要多個步驟,多個bolts。Bolts能做任何事情,像執(zhí)行functions,過濾tuples,數(shù)據(jù)流聚合,數(shù)據(jù)流join,與數(shù)據(jù)庫間的協(xié)作 等等。(對于Storm來說,Bolt是數(shù)據(jù)流的處理者,可以有多個,負責真正業(yè)務邏輯上的聚合計算等等。)
Spouts和Bolts間的網(wǎng)絡傳輸被打包進一個 topology,然后你交于一個Storm集群去執(zhí)行。當一個spout或bolt發(fā)射一個tuple到流里時, 它會發(fā)射這個tuple到所有的抓取這個流的bolt中。(需要注意的是,如果多個處理相同邏輯業(yè)務的bolt在發(fā)生數(shù)據(jù)聚合時,bolt的聚合結(jié)果未必是最終結(jié)果,這個和多個reducer計算Top one的情況是一樣的。)
在Storm里每個node執(zhí)行是并行的。在你的topology里,你能指定node的并行度(比如 5),然后Storm會產(chǎn)生與其相當數(shù)量的Thread在集群中執(zhí)行。
一個Topology會一直執(zhí)行下去的,或者你kill了它。Storm也會自動地重分配那些失敗了task。當然,Storm也會保證沒有任何的數(shù)據(jù)丟失,甚至機器下線和數(shù)據(jù)刪除(TODO 有待深究原理)
感謝各位的閱讀,以上就是“Storm組件有哪些”的內(nèi)容了,經(jīng)過本文的學習后,相信大家對Storm組件有哪些這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關知識點的文章,歡迎關注!
網(wǎng)頁題目:Storm組件有哪些
新聞來源:http://www.rwnh.cn/article48/jichep.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供域名注冊、自適應網(wǎng)站、搜索引擎優(yōu)化、網(wǎng)站收錄、網(wǎng)站導航、網(wǎng)站策劃
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)