大數據Storm有什麼優勢?
- 2019 年 10 月 6 日
- 筆記
在大數據Hadoop組件中,有MapReduce、Spark,但基於實時的流式計算,Hadoop體系外的Storm有著不可替代的快速的優勢。那Storm的作用是什麼呢?
一、Storm的應用場景
主要用於基於網路的快速小數據處理。比如用戶在淘寶網站上點擊了什麼鏈接、最新的訂單從哪個地方產生。這些數據資訊量其實不大,但要求進行快速的處理實時處理,以便於實時的呈現。
例如下圖,阿里的實時訂單數據,我們可以進行成交金額的快速獲知

二、Storm與MapReduce的區別
1、Storm特點:基於記憶體計算、基於網路數據來源、用於實時計算
2、MapReduce特點:基於磁碟計算、數據來源於磁碟、用於批量非實時計算。
大家覺得Storm很有優勢,但實際天生我才必有用,MapReduce的作用也很大。我們將所有的數據都存放到HDFS中,一般數據可為PB級別,採用MapReduce可充分發揮分散式計算的特點,得到區間段的數據分析結果。例如,運營商可以基於MapReudce可以分析所有網路用戶訪問互聯網網站的Top10記錄,以便於進行針對性的網站服務保障。
三、Storm的重要組件
1、主節點Nimbus,進行計算任務的分配,提交具體任務
2、Zookeeper,用於Nimbus與Supervisor的任務調度。Nimbus將任務寫到Zookeeper中,Supervisor通過ZookeeperClient至Zookeeper的INI中取到具體的任務。同時,Nimbus通過Zookeeper感知到哪台工作機無法工作,將不再把任務分配給該故障工作機。
3、Supervisor中運行worker進行,運行具體的計算任務。

四、Storm的工作流程

Storm在運行中可分為spout與bolt兩個組件,其中,數據源從spout開始,數據以tuple的方式發送到bolt,多個bolt可以串連起來,一個bolt也可以接入多個spot/bolt。
Topology:Storm中運行的一個實時應用程式的名稱。將 Spout、 Bolt整合起來的拓撲圖。定義了 Spout和 Bolt的結合關係、並發數量、配置等等。
Spout:在一個topology中獲取源數據流的組件。通常情況下spout會從外部數據源中讀取數據,然後轉換為topology內部的源數據。
Bolt:接受數據然後執行處理的組件,用戶可以在其中執行自己想要的操作。
Tuple:一次消息傳遞的基本單元,理解為一組消息就是一個Tuple。
Stream:Tuple的集合。表示數據的流向。
五、Topology的運行
在Storm中,一個實時應用的計算任務被打包作為Topology發布,這同Hadoop的MapReduce任務相似。但是有一點不同的是:在Hadoop中,MapReduce任務最終會執行完成後結束;而在Storm中,Topology任務一旦提交後永遠不會結束,除非你顯示去停止任務。