storm基本概念

流式計(jì)算中咆霜,各個(gè)中間件產(chǎn)品對(duì)計(jì)算過程中的角色的抽象都不盡相同,實(shí)現(xiàn)方式也是千差萬(wàn)別。本文針對(duì)storm中間件在進(jìn)行流式計(jì)算中的幾個(gè)概念做個(gè)概括總結(jié)席噩。

基本元素:

storm分布式計(jì)算結(jié)構(gòu)稱為topology(拓?fù)?由stream,spout,bolt組成。


spout代表一個(gè)storm拓?fù)渲械臄?shù)據(jù)入口贤壁,連接到數(shù)據(jù)源悼枢,將數(shù)據(jù)轉(zhuǎn)化為一個(gè)個(gè)tuple,并發(fā)射tuple

stream是由無(wú)限制個(gè)tuple組成的序列脾拆。tuple為storm的核心數(shù)據(jù)結(jié)構(gòu)馒索,是包含了一個(gè)或多個(gè)鍵值對(duì)的列表莹妒。

bolt可以理解為計(jì)算程序中的運(yùn)算或者函數(shù),bolt的上游是輸入流绰上,經(jīng)過bolt實(shí)施運(yùn)算后旨怠,可輸出一個(gè)或者多個(gè)輸出流。

bolt可以訂閱多個(gè)由spout或者其他bolt發(fā)射的數(shù)據(jù)流蜈块,用以構(gòu)建復(fù)雜的數(shù)據(jù)流轉(zhuǎn)換網(wǎng)絡(luò)鉴腻。


上述即為storm最基本的組成元素,無(wú)論storm如何運(yùn)行百揭,都是以stream,spout,bolt做為最基本的運(yùn)行單元爽哎。而這三者則是共同構(gòu)成了一個(gè)storm拓?fù)鋞opology。

storm集群組成部分:

首先需要明確一個(gè)概念器一,bolt,spout實(shí)例课锌,都屬于任務(wù),spout產(chǎn)生數(shù)據(jù)流盹舞,并發(fā)射产镐,bolt消費(fèi)數(shù)據(jù)流,進(jìn)行計(jì)算踢步,并進(jìn)行落地或再發(fā)射癣亚,他們的存在以及運(yùn)行過程都需要消耗資源,而storm集群是一個(gè)提供了資源的集群,我們要做的就是將spout/boult實(shí)例合理分配到storm集群提供的計(jì)算資源上,這樣就可以讓spout/bolt得以執(zhí)行驳庭。


worker為JVM進(jìn)程,一個(gè)topology會(huì)分配到一個(gè)或者多個(gè)worker上運(yùn)行玻孟。

executor是worker內(nèi)的java線程,是具體執(zhí)行bolt/spout實(shí)例用的鳍征。下篇文章在介紹如何提供storm并行計(jì)算能力時(shí)會(huì)介紹worker以及executor的配置黍翎。

在storm中,worker是由supervisor進(jìn)程創(chuàng)建艳丛,并進(jìn)行監(jiān)控的匣掸。storm集群遵循主從模式,主為nimbus氮双,從為supervisor碰酝,storm集群由一個(gè)主節(jié)點(diǎn)(確實(shí)有單點(diǎn)問題),和多個(gè)工作節(jié)點(diǎn)(supervisor)組成戴差,并使用zookeeper來(lái)協(xié)調(diào)集群中的狀態(tài)信息送爸,比如任務(wù)分配情況,worker狀態(tài),supervisor的拓?fù)涠攘俊?/p>


通過配置可指定supervisor上可運(yùn)行多少worker袭厂。一個(gè)worker代表一個(gè)slot墨吓。

nimbus守護(hù)進(jìn)程的主要職責(zé)是管理,協(xié)調(diào)和監(jiān)控在集群上運(yùn)行的topology.包括topology的發(fā)布纹磺,任務(wù)指派肛真,事件處理失敗時(shí)重新指派任務(wù)。

supervisor守護(hù)進(jìn)程等待nimbus分配任務(wù)后生成并監(jiān)控workers執(zhí)行任務(wù)爽航。supervosior和worker都是運(yùn)行在不同的JVM進(jìn)程上。


了解了集群模式下乾忱,storm大致的分布概念讥珍,下面結(jié)合筆者做的一個(gè)實(shí)例,了解一下如何發(fā)布計(jì)算資源到storm集群上窄瘟。

注:本文不花費(fèi)大量篇章在代碼實(shí)現(xiàn)說明上衷佃,讀者主要著重概念。


筆者定義了一個(gè)spout,兩個(gè)bolt 運(yùn)算過程如下:


其中streamMaking是一個(gè)不斷生成隨機(jī)數(shù)(5~30)的spout實(shí)例蹄葱,Step1Bolt會(huì)過濾掉15以下的隨機(jī)數(shù)(過濾)氏义,15以上的隨機(jī)數(shù)會(huì)乘以16(計(jì)算),再將結(jié)果向后發(fā)射图云。Step2Bolt訂閱Step1Bolt發(fā)射的數(shù)據(jù)惯悠,接收數(shù)據(jù)后,打印輸出竣况。流程結(jié)束克婶。

筆者在定義spout/bolt實(shí)例時(shí),配置了spout,bolt的并行執(zhí)行數(shù)丹泉。其中

streamMaking:4 ? Step1Bolt:2 ?Step2Bolt 1

這樣情萤,發(fā)布成功后,storm會(huì)根據(jù)我的配置摹恨,分配足夠的計(jì)算資源給予spout/bolt進(jìn)行執(zhí)行筋岛。

發(fā)布:

發(fā)布時(shí),spout和bolt都是在一起以jar的形式發(fā)布到nimbus上的晒哄,分配后睁宰,內(nèi)部定義的spout和bolt將以組件的形式被nimbus分配至worker進(jìn)程中執(zhí)行。

其中worker都是由supervisor創(chuàng)建的揩晴,創(chuàng)建出來(lái)的worker進(jìn)程與supervisor是分開的不同進(jìn)程勋陪。一個(gè)supervisor可創(chuàng)建多少worker可通過修改storm安裝目錄下的storm.yaml進(jìn)行配置。


上述配置中硫兰,指明了該supervisor最多可生成6個(gè)worker诅愚,每一個(gè)worker將使用其中一個(gè)端口。

task是執(zhí)行的最小單元。spout/bolt實(shí)例在定義中指定了违孝,要起多少task刹前,以及多少executor。也即一個(gè)topology發(fā)布之前已經(jīng)定義了task總量雌桑,和需要多少資源來(lái)執(zhí)行我的task總量喇喉。nimbus將根據(jù)已有的計(jì)算資源進(jìn)行分配。

下圖中:? nimbus左邊代表著計(jì)算任務(wù)量校坑,和所需計(jì)算配置

nimbus右邊代表著計(jì)算資源

nimbus將根據(jù)計(jì)算資源信息拣技,合理的分發(fā)計(jì)算任務(wù)量。


發(fā)布成功后耍目,通過storm自帶的UI功能膏斤,可以查看你發(fā)布的topology運(yùn)行以及其中每個(gè)組件的分布執(zhí)行情況。



監(jiān)控圖像中清晰的顯示了邪驮,目前部署的topology莫辨,以及topology中每個(gè)組件所分配的計(jì)算資源所在host,以及每個(gè)組件發(fā)射了多少tuple毅访,接收了多少tuple沮榜,以及有多少個(gè)executor在并行執(zhí)行。

本文講述了storm內(nèi)的基本元素以及基本概念喻粹,后續(xù)將講述storm的重點(diǎn)配置信息蟆融,以及如何提高并發(fā)計(jì)算能力,窗口概念等高級(jí)特性守呜,后續(xù)會(huì)進(jìn)行源碼分析振愿,以及與其他實(shí)時(shí)計(jì)算中間件的比較。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末弛饭,一起剝皮案震驚了整個(gè)濱河市冕末,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌侣颂,老刑警劉巖档桃,帶你破解...
    沈念sama閱讀 218,546評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異憔晒,居然都是意外死亡藻肄,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,224評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門拒担,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)嘹屯,“玉大人,你說我怎么就攤上這事从撼≈莸埽” “怎么了?”我有些...
    開封第一講書人閱讀 164,911評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)婆翔。 經(jīng)常有香客問我拯杠,道長(zhǎng),這世上最難降的妖魔是什么啃奴? 我笑而不...
    開封第一講書人閱讀 58,737評(píng)論 1 294
  • 正文 為了忘掉前任潭陪,我火速辦了婚禮,結(jié)果婚禮上最蕾,老公的妹妹穿的比我還像新娘依溯。我一直安慰自己,他們只是感情好瘟则,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,753評(píng)論 6 392
  • 文/花漫 我一把揭開白布誓沸。 她就那樣靜靜地躺著,像睡著了一般壹粟。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上宿百,一...
    開封第一講書人閱讀 51,598評(píng)論 1 305
  • 那天趁仙,我揣著相機(jī)與錄音,去河邊找鬼垦页。 笑死雀费,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的痊焊。 我是一名探鬼主播盏袄,決...
    沈念sama閱讀 40,338評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼薄啥!你這毒婦竟也來(lái)了辕羽?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,249評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤垄惧,失蹤者是張志新(化名)和其女友劉穎刁愿,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體到逊,經(jīng)...
    沈念sama閱讀 45,696評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡铣口,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,888評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了觉壶。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片脑题。...
    茶點(diǎn)故事閱讀 40,013評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖铜靶,靈堂內(nèi)的尸體忽然破棺而出叔遂,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 35,731評(píng)論 5 346
  • 正文 年R本政府宣布掏熬,位于F島的核電站佑稠,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏旗芬。R本人自食惡果不足惜舌胶,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,348評(píng)論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望疮丛。 院中可真熱鬧幔嫂,春花似錦、人聲如沸誊薄。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,929評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)呢蔫。三九已至切心,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間片吊,已是汗流浹背绽昏。 一陣腳步聲響...
    開封第一講書人閱讀 33,048評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留俏脊,地道東北人全谤。 一個(gè)月前我還...
    沈念sama閱讀 48,203評(píng)論 3 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像爷贫,于是被迫代替她去往敵國(guó)和親认然。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,960評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • 目錄 場(chǎng)景假設(shè) 調(diào)優(yōu)步驟和方法 Storm 的部分特性 Storm 并行度 Storm 消息機(jī)制 Storm UI...
    mtide閱讀 17,110評(píng)論 30 60
  • 本文主要介紹storm中的基本概念漫萄,從基礎(chǔ)上了解strom的體系結(jié)構(gòu)卷员,便于后續(xù)編程過程中作為基礎(chǔ)指導(dǎo)。主要的概念包...
    看山遠(yuǎn)兮閱讀 1,527評(píng)論 0 9
  • Storm 系統(tǒng)中包含以下幾個(gè)基本概念:拓?fù)洌═opologies)流(Streams)數(shù)據(jù)源(Spouts)數(shù)據(jù)...
    發(fā)光的魚閱讀 826評(píng)論 0 0
  • Date: Nov 17-24, 2017 1. 目的 積累Storm為主的流式大數(shù)據(jù)處理平臺(tái)對(duì)實(shí)時(shí)數(shù)據(jù)處理的相關(guān)...
    一只很努力爬樹的貓閱讀 2,174評(píng)論 0 4
  • 【每日一言·德育】 德育與藝體結(jié)合腾务,我認(rèn)為首先是藝體學(xué)科德育目標(biāo)落實(shí)的問題子刮;其次是藝體活動(dòng)中進(jìn)一步錘練,以及展示學(xué)...
    小小宇哥閱讀 593評(píng)論 0 0