Storm學習記錄(二 分發策略與架構)

2021-09-08 20:08:36 字數 3553 閱讀 1787

shuffle grouping:

隨機分組,隨機派發

stream

裡面的tuple

,保證每個

bolt task

接收到的

tuple

數目大致相同。

輪詢,平均分配 

fields grouping:

按欄位分組,比如,按

"user-id"

這個欄位來分組,那麼具有同樣

"user-id"

的 tuple

會被分到相同的

bolt

裡的乙個

task

, 而不同的

"user-id"

則可能會被分配到不同的

task

。 all grouping:廣播傳送,對於每乙個

tuple

,所有的

bolts

都會收到 

global grouping:全域性分組,把

tuple

分配給task id

最低的task

none grouping:不分組,這個分組的意思是說

stream

不關心到底怎樣分組。目前這種分組和

shuffle grouping

是一樣的效果。 有一點不同的是

storm

會把使用

none grouping

的這個bolt

放到這個

bolt

的訂閱者同乙個執行緒裡面去執行(未來

storm

如果可能的話會這樣設計)。 

direct grouping:指向型分組, 這是一種比較特別的分組方法,用這種分組意味著訊息(tuple

)的傳送者指定由訊息接收者的哪個

task

處理這個訊息。只有被宣告為

direct stream

的訊息流可以宣告這種分組方法。而且這種訊息

tuple

必須使用

emitdirect

方法來發射。訊息處理者可以通過

topologycontext

來獲取處理它的訊息的

task

的id (

outputcollector.emit

方法也會返回

task

的id)  

local or shuffle grouping:本地或隨機分組。如果目標bolt

有乙個或者多個

task

與源bolt

的task

在同乙個工作程序中,

tuple

將會被隨機傳送給這些同程序中的

tasks

。否則,和普通的

shuffle grouping

行為一致

customgrouping:自定義,相當於mapreduce

那裡自己去實現乙個

partition

一樣。

public class main  catch (alreadyaliveexception e)  catch (invalidtopologyexception e) 

nimbusstorm集群的master節點,負責分發使用者**,指派給具體的supervisor節點上的worker節點,去執行topology對應的元件(spout/bolt)的task。

supervisor

storm集群的從節點,負責管理執行在supervisor節點上的每乙個worker程序的啟動和終止。通過storm的配置檔案中的supervisor.slots.ports配置項,可以指定在乙個supervisor上最大允許多少個slot,每個slot通過埠號來唯一標識,乙個埠號對應乙個worker程序(如果該worker程序被啟動)。

worker

執行具體處理元件邏輯的程序。worker執行的任務型別只有兩種,一種是spout任務,一種是bolt任務。

task

worker中每乙個spout/bolt的執行緒稱為乙個task. 在storm0.8之後,task不再與物理執行緒對應,不同spout/bolt的task可能會共享乙個物理執行緒,該執行緒稱為executor。

zookeeper

用來協調nimbus和supervisor,如果supervisor因故障出現問題而無法執行topology,nimbus會第一時間感知到,並重新分配topology到其它可用的supervisor上執行

二分發查詢

演算法 當資料量很大適宜採用該方法。採用二分法查詢時,資料需是排好序的。基本思想 假設資料是按公升序排序的,對於給定值x,從序列的中間位置開始比較,如果當前位置值等於x,則查詢成功 若x小於當前位置值,則在數列的前半段 中查詢 若x大於當前位置值則在數列的後半段中繼續查詢,直到找到為止。二分法查詢在...

二分與二分答案學習

判斷left,mid,right的符號進行區間的精確。如下為遞迴二分求零點的操作 double find zero point double left,double right,double precesion double mid right left 2 if f mid 0 if f mid ...

資料結構與演算法 二分查詢發

取中間索引位置的資料和查詢的資料進行比較,如果中間索引位置的資料更大,說明查詢的資料在中間索引的左邊,此時 最大索引等於 上一次中間索引 1 重新計算中間索引,如果中間索引位置的資料更小 說明查詢的資料在中間索引的右邊,此時 最小索引等於上一次中間索引 1 重新計算中間索引 操作的陣列必須是有序的 ...