Storm基本知識總結

Storm是一個開源的分佈式實時計算系統,可以簡單、可靠的處理大量的數據流。Storm的部署和運維都很便捷,而且更爲重要的是可以使用任意編程語言來開發應用

storm:實時計算系統

            低延遲,高性能,分佈式,可擴展,容錯

特點:簡單編程模型,熱部署,各種編程語言,可擴展,容錯,可靠消息處理,快速,本地模式

storm基本概念:

        Nimbus:負責資源分配和任務調度

        Supervisor:負責接受nimbus分配的任務,啓動和停止屬於自己管理的worker進程

        Worker:運行具體處理組件邏輯的進程

        Task:worker中每一個spout/bolt的線程稱爲一個task,在storm0.8後,task不在與物理線程對應,同一個spout/bolt的task可能會共享一個物理線程,該線程稱爲executor

        Topology:storm中運行的一個實時的應用程序,因爲各個組件間的消息流動形成邏輯上的一個拓撲結構

        Spout:在一個topology中產生源數據的組件。通常情況下spout會從外部數據源中讀取數據,然後轉換爲topology的內部的源數據。spout是一個主動的角色,其接口中有一個nextTuple()的函數。storm框架會不停的調用此函數,用戶只要在其中生成源數據即可。

        Bolt:在一個topology中接受數據然後執行處理的組件。Bolt可以執行過濾、函數操作、合併、寫數據庫等任何操作。Bolt是一個被動的角色,其接口中有個execute(Tupleinput)函數,在接受到消息後會調用此函數,用戶可以在其中執行自己想要的操作。

        Tuple:一次消息傳遞的基本單元。本來應該是一個key-value的map,但是由於各個組件間的傳遞的tuple的字段名稱已經事先定義好,所以Tuple中只要按序填入各個value就行了,是一個valueList。

        Stream:源源不斷傳遞的Tuple就組成了stream.

 

Strom使用場景:

1.流聚合:把兩個或者多個數據流聚合成一個數據流-基於一些共同的tuple字段。

2.批處理:爲了性能或者一些別的原因,把一組tuple一起處理,而不是一個一個的單獨處理。

3.BasicBolt

a.讀一個輸入的tuple

b.根據一個輸入tuple發射一個或多個tuple

c.在execute的方法的最後ack那個輸入tuple遵循這類模式的bolt一般是函數或者是過濾器,這種模式太常見,storm爲這類模式單獨封裝了一個接口:IbasicBolt

d.內存內緩存+Fields grouping組合

e.據算topN

f.用TimeCacheMap來高效的保存一個最近被更新對象的緩存

g.分佈式RPC

storm分組機制

1.隨機分組(Shuffle grouping)

2.字段分組(Fields grouping)

3.全部分組(All grouping)

4.全局分組(Global grouping)

5.無分組(None grouping)

6.直接分組(Direct grouping)

7.實現CustomStreamGrouping接口來定義自己的分組


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章