Storm概念學習系列之Stream訊息流 和 Stream Grouping 訊息流組
Stream訊息流是Storm中最關鍵的抽象,是一個沒有邊界的Tuple序列。
Stream Grouping 訊息流組是用來定義一個流如何分配到Tuple到Bolt。
Stream訊息流和Stream Grouping訊息流組
Storm核心的抽象概念是“流”。流是一個分散式並行建立和處理的無界的連續元組(Tuple)。流通過給流元組中欄位命名來定義。在預設情況下,元組可以包含整型、長整型、短整型、位元組、字串、雙精度浮點數、單精度浮點數、布林型和位元組陣列。
Stream訊息流
Stream消息流是Storm中最關鍵的抽象,是一個沒有邊界的Tuple序列,這些Tuple以分散式的方式並行地建立和處理。源源不斷傳遞的元組Tuple就組成了流Stream,定義訊息流主要是定義訊息流中的Tuple。Tuple的定義在前面的博文已經做了詳細介紹,本博文不再累述。訊息流Tuple中的每個欄位都有一個名字,並且不同Tuple對應欄位的型別必須相同。兩個Tuple的第一個欄位的型別必須相同,第二個欄位的型別必須相同,但是第一個欄位和第二個欄位可以有不同的型別。
每個訊息流在定義時都會分配一個ID,因為單向訊息流很普遍,OutputFieldsDeclarer定義了一些方法可以定義一個流而不用指定其ID。在這種情況下,該流有一個預設的ID。
Storm將每個待處理或者新產生的Tuple封裝成“訊息”,而一個訊息流(Stream)則是一個沒有邊界的Tuple序列,而這些Tuple會以一種分散式的方式被並行地建立和處理。
Stream Grouping訊息流組
定義Topology的其中一步是定義每個Bolt接受何種流作為輸入。Stream Grouping(訊息流組)就是用來定義一個流如何分配Tuple到Bolt。Storm包括6種流分組型別。
1)隨機分組(Shuffle Grouping):隨機分發元組到Bolt的任務,保證每個任務獲得相等數量的元組。
2)欄位分組(Fields Grouping):根據指定欄位分割資料流並分組。例如,根據“user-id”欄位,具有該欄位的Tuple被分到相同的Bolt,不同的“user-id”值則會被分配到不同的Bolt。
3)全部分組(All Grouping):對於每一個Tuple來說,所有的Bolt都會收到,所有的Tuple被複制到Bolt的所有任務上,需小心使用該分組。
4)全域性分組(Global Grouping):全部的流都分配到Bolt的同一個任務,就是分配給ID最小的Task。
5)無分組(None Grouping):不分組的含義是,流不關心到底誰會收到它的Tuple。目前無分組等效於隨機分組,不同的是Storm將把無分組的Bolt放到訂閱Bolt或Spout的同一執行緒中執行(在可能實現的前提下)。
6)直接分組(Direct Grouping):這是一個特別的分組型別。元組生產者決定元組由哪個元組消費者任務接收。該分組僅能被宣告為direct stream的流使用。元組必須通過emitDirect方法直接發射。Bolt獲取消費者任務ID,可以使用已提供的TopologyContext類或保持引用OutputCollector類的emit方法的輸出,元組傳送後返回任務ID列表。
本文轉自大資料躺過的坑部落格園部落格,原文連結:http://www.cnblogs.com/zlslch/p/5989723.html,如需轉載請自行聯絡原作者
相關文章
- 《Storm企業級應用:實戰、運維和調優》——3.5 Stream訊息流和StreamGrouping訊息流組ORM運維
- SpringCloud 2020.0.4 系列之 Stream 訊息廣播 與 訊息分組 的實現SpringGCCloud
- java的Stream流學習Java
- SpringCloud-Stream 訊息驅動SpringGCCloud
- SpringCloud(七)Stream訊息驅動SpringGCCloud
- 九. SpringCloud Stream訊息驅動SpringGCCloud
- Spring Cloud Stream微服務訊息框架SpringCloud微服務框架
- Stream流
- 【重學Java】Stream流Java
- “訊息驅動、事件驅動、流 ”基礎概念解析事件
- nodejs中stream(流)學習分享NodeJS
- SpringCloud 2020.0.4 系列之 Stream 延遲訊息 的實現SpringGCCloud
- Stream 流模組
- Stream流求和
- Redis系列:使用Stream實現訊息佇列 (圖文總結+Go案例)Redis佇列Go
- .net core 訊息流處理流程
- Spring Cloud 終結篇之訊息驅動--stream 大集合SpringCloud
- 訊息驅動式微服務:Spring Cloud Stream & RabbitMQ微服務SpringCloudMQ
- Java Stream流使用Java
- java-Stream流Java
- stream流各種
- 手寫訊息匯流排LiveDataBusLiveData
- SpringCloud(六)Bus訊息匯流排SpringGCCloud
- Java-Stream流方法學習及總結Java
- Node.js stream(流) 學習筆記(一)Node.js筆記
- Storm保證訊息處理ORM
- Storm系列(四)並行度和流分組ORM並行
- 丐版stream流理解和使用
- Spring Cloud Stream如何消費自己生產的訊息?SpringCloud
- Spring Cloud Stream如何處理訊息重複消費?SpringCloud
- 我最喜歡的程式之間通訊方式-訊息匯流排
- JDK8新特性之Stream流JDK
- 此流非彼流——Stream詳解
- QNX學習 -- API之訊息傳遞API
- IOS學習之NSNotificationCenter訊息機制iOS
- Java8——Stream流Java
- Node.js Stream(流)Node.js
- Node.js Stream(流)Node.js