Storm架構和程式設計模型總結

2021-08-19 20:02:43 字數 1274 閱讀 5272

1、程式設計模型

datasource:外部資料來源

spout:接受外部資料來源的元件,將外部資料來源轉化成storm內部的資料,以tuple為基本的傳輸單元下發給bolt

bolt:接受spout傳送的資料,或上游的bolt的傳送的資料。根據業務邏輯進行處理。傳送給下乙個bolt或者是儲存到某種介質上。介質可以是redis可以是mysql,或者其他。

tuple:storm內部中資料傳輸的基本單元,裡面封裝了乙個list物件,用來儲存資料。

streamgrouping:資料分組策略

7種:shufflegrouping(random函式),non grouping(random函式),fieldgrouping(hash取模)、local or shufflegrouping 本地或隨機,優先本地。

2、併發度

使用者指定的乙個任務,可以被多個執行緒執行,併發度的數量等於執行緒的數量。乙個任務的多個執行緒,會被執行在多個worker(jvm)上,有一種類似於平均演算法的負載均衡策略。盡可能減少網路io,和hadoop中的mapreduce中的本地計算的道理一樣。

3、架構

nimbus:任務分配

supervisor:接受任務,並啟動worker。worker的數量根據埠號來的。

worker:執行任務的具體元件(其實就是乙個jvm),可以執行兩種型別的任務,spout任務或者bolt任務。

task:task=執行緒=executor。 乙個task屬於乙個spout或者bolt併發任務。

zookeeper:儲存任務分配的資訊、心跳資訊、元資料資訊。

4、worker與topology

乙個worker只屬於乙個topology,每個worker中執行的task只能屬於這個topology。    反之,乙個topology包含多個worker,其實就是這個topology執行在多個worker上。

乙個topology要求的worker數量如果不被滿足,集群在任務分配時,根據現有的worker先執行topology。如果當前集群中worker數量為0,那麼最新提交的topology將只會被標識active,不會執行,只有當集群有了空閒資源之後,才會被執行。

5、如何指定驅動類中每個元件的併發度數量?如何設定worker的數量?

1.根據上游的資料量來設定spout的併發度。

2.根據業務複雜度和excute方法執行時間來設定bolt併發度。

3.根據集群的可用資源來配置,一般情況下70%的資源使用率。

4.worker的數量根據程式併發度中的task輸入來均分,在實際的業務場景中,需要反覆調整。

Storm架構和程式設計模型的總結

1 程式設計模型 datasource 外部資料來源 spout 接受外部資料來源的元件,將外部資料來源轉化成storm內部的資料,以tuple為基本的傳輸單元下發給bolt bolt 接受spout傳送的資料,或上游的bolt的傳送的資料。根據業務邏輯進行處理。傳送給下乙個bolt或者是儲存到某種...

Storm 程式設計模型

元組 tuple 是訊息傳遞的基本單元,是乙個命名的值列表,元組中的字段可以是任何型別的對 象。storm使用元組作為其資料模型,元組支援所有的基本型別 字串和位元組陣列作為字段值,只要實現 型別的序列化介面就可以使用該型別的物件。元組本來應該是乙個key value的map,但是由於各個組 件間傳...

Storm 程式設計模型

元組 tuple 是訊息傳遞的基本單元,是乙個命名的值列表,元組中的字段可以是任何型別的對 象。storm使用元組作為其資料模型,元組支援所有的基本型別 字串和位元組陣列作為字段值,只要實現 型別的序列化介面就可以使用該型別的物件。元組本來應該是乙個key value的map,但是由於各個組 件間傳...