簡介數據庫
Strom是一個開源的分佈式流式計算系統,用來處理流式的數據,被稱做爲流式的hadoop,在電信行業,能夠用來作大流量預警、終端營銷、訪問競爭對手產品從而作挽留等業務。本文將從storm在hadoop生態圈中所處位置、storm中術語、storm平臺搭建、storm應用程序構建等詳細介紹storm。數據結構
Strom在大數據生態圈中的位置架構
上圖能夠看出,Storm處於HDFS之上,可是並非說Storm只能是處理HDFS中數據,反而Storm的數據來源通常是Log日誌或者是Kafka中數據,當數據經過Strom處理完成以後,其流向能夠是HDFS、HBase、關係型數據庫等。分佈式
Strom是一個計算系統,在大數據處理中,咱們耳熟能詳的計算系統是mapreduce,這張架構圖看出storm和mapreduce是同級關係,而storm被稱做是流式的hadoop。因此接下來將經過與mapreduce進行對比來介紹stormide
3.Strom經常使用術語介紹函數
Strom | MapReduce(基於hadoop2.X) | 描述 |
Nimbus | ApplicationMaster | MapReduce中Resourcemanager負責任務分配、資源申請,一樣的在Strom中Nimbus負責代碼的分發,任務的分配和調度工做 |
Supervisor | NodeManager | MapReducer中NodeManager負責資源的申請,工做進程啓動和監控,Strom中Supervisor一樣負責任務進程的啓動和中止 |
Worker |
YarnChild | 真正負責任務處理的進程 |
Topology | MapReduce | 驅動程序 |
Strom架構Topology:經過Storm構建的應用程序描述了數據的來源、數據的處理邏輯和數據的流向。oop
Spout:Topology中的組件,經過Spout描述了數據的來源,Spout中有一個nextTuple()函數,該函數會不停的被調用,源數據的生成就在該函數中實現,而後數據流向下一節點,每一個Topology中只容許有一個Spout。大數據
Bolt:Topology中的組件,該組件接收上一節點(Spout或Bolt)發射過來的數據,該組件中有一個execute(Tuple tuple)方法,當接收到數據後該函數會被動執行,進行合併、篩選、持久化等操做。Bolt能夠是Topology中一次完整的數據處理流程的終點,或者是轉移點。spa
Tuple:Tuple是Storm中傳遞消息的基本單元,Tuple的數據結構爲一個List。日誌
Stream:接二連三的Tuple就組成了Stream。
Stream grouping:描述了數據在不一樣的組件(Spout/Bolt)之間流轉時,partition的規則,類型以下:
1.shuffle Grouping:隨機分組,隨機派發stream裏面的tuple,保證每一個bolt接收到的tuple數目相同 2.Fields Grouping:按照字段分組,相同的字段會分配到相同的bolt,不一樣的字段分配到不一樣的Bolt 3.ALL Grouping:廣播,對每個tuple,全部的bolt都會收到 4.Global Grouping:全局分組,這個tuple被分配到storm的一個bolt的一個task內,即id最低的那個 5.Non Grouping:不分組,目前效果和Global Groouping同樣 6.Direct Grouping:直接分組,指定消息的接收者。