storm有7種流分組策略:
1:shuffle grouping
隨機分組;將tuple隨機分配到bolt中,能夠保證各task中處理的資料均衡;
2:fields grouping
按欄位分組; 根據設定的字段相同值得tuple被分配到同乙個bolt進行處理;
舉例:builder.setbolt("mybolt", new mystorebolt(),5).fieldsgrouping("checkbolt",new fields("uid"));
說明:該bolt由5個任務task執行,相同uid的元組tuple被分配到同乙個task進行處理;該task接收的元祖欄位是mybolt發射出的字段資訊,不受uid分組的影響。
該分組不僅方便統計而且還可以通過該方式保證相同uid的資料儲存不重複(uid資訊寫入資料庫中唯一);
3:all grouping
廣播傳送:所有bolt都可以收到該tuple
4:global grouping
全域性分組:tuple被傳送給bolt的同乙個並且最小task_id的任務處理,實現事務性的topology
5:none grouping
不分組:效果等同於shuffle grouping.
6:direct grouping
直接分組:由tuple的發射單元直接決定tuple將發射給那個bolt,一般情況下是由接收tuple的bolt決定接收哪個bolt發射的tuple。這是一種比較特別的分組方法,用這種分組意味著訊息的傳送者指定由訊息接收者的哪個task處理這個訊息。 只有被宣告為direct stream的訊息流可以宣告這種分組方法。而且這種訊息tuple必須使用emitdirect方法來發射。訊息處理者可以通過topologycontext來獲取處理它的訊息的taskid (outputcollector.emit方法也會返回taskid)。
7:local or shuffle grouping
本地或者隨機分組
storm分組策略介紹
size medium b 一 storm資料 b size spout的資料來源 mq 直接流資料來源 db 只能讀配置檔案 檔案 只能學習用,其他無用。問題 1 分布式應用無法讀 2 spout開併發會重複讀 log檔案增量資料 1 讀出內容寫入mq,2 storm處理 size medium ...
storm訊息分組策略
grouping 訊息分發策略決定了訊息在spout和bolt間,bolt和bolt間如何進行傳遞。流分組策略有內建的八種,同時還可以進行自定義。這裡將介紹最常用的幾種 shuffle grouping 隨機分發到兩個bolt上,確保兩個bolt上tuple的數量大體相同,從日誌列印上可看出。bui...
storm的流分組策略
關於storm的基礎,參照我這篇文章 流式計算storm 關於併發和並行,參照我這篇文章 併發和並行 關於storm的並行度解釋,參照我這篇文章 storm的並行度解釋 關於storm的流分組策略,參照我這篇文章 storm的流分組策略 關於storm的訊息可靠機制,參照我這篇文章 storm的訊息...