Storm基本知識總結

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

storm:實時計算系統編程

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

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

storm基本概念:運維

        Nimbus:負責資源分配和任務調度編程語言

        Supervisor:負責接受nimbus分配的任務,啓動和中止屬於本身管理的worker進程分佈式

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

        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接口來定義本身的分組

相關文章
相關標籤/搜索