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 重新計算中間索引 操作的陣列必須是有序的 ...