[size=medium][b]一、storm資料**[/b][/size]
spout的資料來源:
mq:直接流資料來源
db:只能讀配置檔案
檔案:只能學習用,其他無用。
問題:1、分布式應用無法讀;2、spout開併發會重複讀
log檔案增量資料:1、讀出內容寫入mq,2、storm處理
[size=medium][b]二、分組策略[/b][/size]
stream grouping就是用來定義乙個stream應該如果分配給bolts上面的多個
executors(多執行緒,併發度)
注:不是乙個spout或bolt emit到多個bolt(廣播方式)。
storm裡面有6種型別的stream grouping。
單執行緒下均等同於all grouping
1.shuffle grouping:輪詢,每個執行緒平均分配。隨機派發stream裡面的tuple,保證每個bolt接收到的tuple數目相同。
2. non grouping:無分組, 這種分組和shuffle grouping是一樣的效果,多執行緒下不平均分配。
3. fields grouping:按field分組,比如按word來分組, 具有同樣word的tuple會被分到相同的bolts, 而不同的word則會被分配到不同的bolts。
2、相同的tuple會分發給同乙個執行緒(executer或task)處理
典型場景: 去重操作、join
4. all grouping: 廣播傳送, 對於每乙個tuple, 所有的bolts都會收到。每個執行緒獲得的資料一致。
5. global grouping: 全域性分組, 這個tuple被分配到storm中的乙個bolt的其中乙個task。再具體一點就是分配給id值最低的那個task。適合場景:想象不到。
6. direct grouping: 直接分組, 這是一種比較特別的分組方法,用這種分組意味著訊息的傳送者決定由訊息接收者的哪個task處理這個訊息。 只有被宣告為direct stream的訊息流可以宣告這種分組方法。而且這種訊息tuple必須使用emitdirect方法來發射。訊息處理者可以通過topologycontext來或者處理它的訊息的taskid (outputcollector.emit方法也會返回taskid)
storm的分組策略
storm有7種流分組策略 1 shuffle grouping 隨機分組 將tuple隨機分配到bolt中,能夠保證各task中處理的資料均衡 2 fields grouping 按欄位分組 根據設定的字段相同值得tuple被分配到同乙個bolt進行處理 舉例 builder.setbolt my...
storm訊息分組策略
grouping 訊息分發策略決定了訊息在spout和bolt間,bolt和bolt間如何進行傳遞。流分組策略有內建的八種,同時還可以進行自定義。這裡將介紹最常用的幾種 shuffle grouping 隨機分發到兩個bolt上,確保兩個bolt上tuple的數量大體相同,從日誌列印上可看出。bui...
storm的流分組策略
關於storm的基礎,參照我這篇文章 流式計算storm 關於併發和並行,參照我這篇文章 併發和並行 關於storm的並行度解釋,參照我這篇文章 storm的並行度解釋 關於storm的流分組策略,參照我這篇文章 storm的流分組策略 關於storm的訊息可靠機制,參照我這篇文章 storm的訊息...