溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

storm記錄--3--Storm的基本概念

發(fā)布時間:2020-07-04 22:10:51 來源:網(wǎng)絡(luò) 閱讀:305 作者:zlfwmm 欄目:大數(shù)據(jù)

首先我們通過一個 storm 和hadoop的對比來了解storm中的基本概念。


HadoopStorm
系統(tǒng)角色JobTrackerNimbus
TaskTrackerSupervisor
ChildWorker
應(yīng)用名稱JobTopology
組件接口Mapper/ReducerSpout/Bolt


接下來我們再來具體看一下這些概念。

a、Nimbus:負(fù)責(zé)資源分配和任務(wù)調(diào)度。

b、Supervisor:負(fù)責(zé)接受nimbus分配的任務(wù),啟動和停止屬于自己管理的worker進(jìn)程。

c、Worker:運行具體處理組件邏輯的進(jìn)程。

d、Task:worker中每一個spout/bolt的線程稱為一個task. 在storm0.8之后,task不再與物理線程對應(yīng),同一個spout/bolt的task可能會共享一個物理線程,該線程稱為executor。


下面這個圖描述了以上幾個角色之間的關(guān)系。

storm記錄--3--Storm的基本概念

  1. Topology:storm中運行的一個實時應(yīng)用程序,因為各個組件間的消息流動形成邏輯上的一個拓?fù)浣Y(jié)構(gòu)。

  2. Spout:在一個topology中產(chǎn)生源數(shù)據(jù)流的組件。通常情況下spout會從外部數(shù)據(jù)源中讀取數(shù)據(jù),然后轉(zhuǎn)換為topology內(nèi)部的源數(shù)據(jù)。Spout是一個主動的角色,其接口中有個nextTuple()函數(shù),storm框架會不停地調(diào)用此函數(shù),用戶只要在其中生成源數(shù)據(jù)即可。

  3. Bolt:在一個topology中接受數(shù)據(jù)然后執(zhí)行處理的組件。Bolt可以執(zhí)行過濾、函數(shù)操作、合并、寫數(shù)據(jù)庫等任何操作。Bolt是一個被動的角色,其接口中有個execute(Tuple input)函數(shù),在接受到消息后會調(diào)用此函數(shù),用戶可以在其中執(zhí)行自己想要的操作。

  4. Tuple:一次消息傳遞的基本單元。本來應(yīng)該是一個key-value的map,但是由于各個組件間傳遞的tuple的字段名稱已經(jīng)事先定義好,所以tuple中只要按序填入各個value就行了,所以就是一個value list.

  5. Stream:源源不斷傳遞的tuple就組成了stream。


Storm分組機(jī)制:

Stream Grouping定義了一個流在Bolt任務(wù)間該如何被切分。這里有Storm提供的6個Stream Grouping類型:

  1. 隨機(jī)分組(Shuffle grouping):隨機(jī)分發(fā)tuple到Bolt的任務(wù),保證每個任務(wù)獲得相等數(shù)量的tuple。

  2. 字段分組(Fields grouping):根據(jù)指定字段分割數(shù)據(jù)流,并分組;例如,根據(jù)“user-id”字段,相同“user-id”的元組總是分發(fā)到同一個任務(wù),不同“user-id”的元組可能分發(fā)到不同的任務(wù)。

  3. 全部分組(All grouping):tuple被復(fù)制到bolt的所有任務(wù),這種類型需要謹(jǐn)慎使用。

  4. 全局分組(Global grouping):全部流都分配到bolt的同一個任務(wù),明確的說,是分配給ID最新的那個task。

  5. 無分組(None grouping):你不需要關(guān)心流失如何分組。目前,無分組等效于隨機(jī)分組。但最終,Storm將把無分組的Bolts放到Bolts或Spouts訂閱它們的同一線程去執(zhí)行(如果可能)。

  6. 直接分組(Direct grouping):這是一個特別的分組類型,元組生產(chǎn)者決定tuple由哪個元組處理者任務(wù)接收。

當(dāng)然還可以實現(xiàn)CustomStreamGrouping接口來定制自己需要的分組。



向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI