Storm 好像傳統的滾梯,來了數據就處理
Hadoop好像是電梯,批量處理數據
Spark streaming 微批處理介於滾梯和電梯之間
Storm 特徵
storm 是個實時的,分佈式的以及高容錯的計算框架
1 storm 常駐內存
2 storm幾乎不經過硬盤,在內存中處理
下面通過官方拓撲圖理解下
看圖說話
1 水龍頭 spout 數據的源頭
2 水滴 tuple 中文 元組 相當於關係型數據庫裏的一行數據 es裏的doc java裏的object
在storm裏代表storm架構處理數據的最小單位
3 水滴加閃電 在storm 裏 代表一個bolt(雷電) (component元件) 一個處理單元
spout vs bolt 1 vs n
4 從圖中我們還可以知道這是一個DAG圖,directed acyclic grapth 有向無環圖
Storm架構 (主從)
1 Nimbus (老闆) 相當於hadoop的namenode
任務分配,資源調度
2 Supervisor (監工) 相當於hadoop的datanode
指派老闆分配下來的任務,通過開啓關閉工作進程的方式
3 worker (工人) 具體幹活的進程
數據傳輸
結點間通訊採用技術
1 ZMQ
twitter早期產品 zero message queue 開源的消息傳遞框架 後來發現有bug不用了
2 Netty
netty是一種基於nio的網絡框架,更加高效,storm0.9後使用Netty,其實也是一種消息隊列
高可靠性
1 異常處理
2 消息可靠性保障機制 ACKER機制
可維護性
Storm ui 圖形化監控接口
Storm 流式處理
異步的實時分析
例:計算PV、UV、訪問熱點 以及 某些數據的聚合、加和、平均等
客戶端提交數據之後,計算完成結果存儲到Redis、HBase、MySQL或者其他MQ當中,
客戶端並不關心最終結果是多少。
同步是實時分析
客戶端提交數據請求之後,立刻取得計算結果並返回給客戶端,推薦系統
Storm 和 MapReduce區別
Storm:進程、線程常駐內存運行,數據不進入磁盤,數據通過網絡傳遞。
MapReduce:爲TB、PB級別數據設計的批處理計算框架。
Storm 和 Spark Streaming 區別
Storm:純流式處理
專門爲流式處理設計
數據傳輸模式更爲簡單,很多地方也更爲高效
並不是不能做批處理,它也可以來做微批處理,來提高吞吐
Spark Streaming:微批處理
將RDD做的很小來用小的批處理來接近流式處理
基於內存和DAG可以把處理任務做的很快
未完待續!!!!!