一、Storm簡介linux
storm是一個分佈式、容錯的實時計算系統,起先被託管在GitHub上,遵循Eclipse Public License 1.0 。Storm是由BackType開發的實時處理系統,由Twitter開源redis
2013年,Storm進入Apache社區進行孵化;sql
2014年9月,晉級爲Apache頂級項目apache
官網 http://storm.apache.org/編程
hadoop和storm的區別:hadoop反覆啓動中止,數據反覆落地耗費時間,storm採用流式處理,數據不落地網絡
數據來源:hadoop的數據是hdfs上的TB級別數據,storm是實時新增的數據;架構
處理過程:hadoop是分爲split 、map、shuffler 、reduce等階段、storm是由用戶定義流程,流程中能夠包含多個步驟,每一個步驟能夠是數據源(spout)或處理邏輯(bolt)框架
是否結束:hadoop最後是要結束的;storm是沒有結束的,數據處理完是要等待新數據的進入的。異步
處理速度:hadoop處理堆積的數據,速度慢,storm只是處理新增的數據,時效性較高;分佈式
二、Storm架構:
Nimbus:管事,可是能夠不存在,若是Nimbus掛掉,以前提價的job能夠繼續進行處理,後續不能繼續提交,所以Nimbus的主要做用是提交任務和經過zk與Supervisor進行溝通;至關於Leader
Supervisor:
Worker
編程模型
DAG:有向無環圖
Spout:源頭
Bolt:bolt處理完數據會使用消息框架將信息返回給上一個Bolt或Spout;
數據傳輸:storm底層傳輸數據使用zmq或者netty
zmq
zmq是開源的消息傳遞框架;(0.9版本以上已經不用了)
Netty
netty是NIO的網絡框架,效率比較高。之因此有netty事storm在apache以後,zmq遵循linux的協議,netty遵循的協議比較寬鬆。
高可用:
異常處理,就是異常崩潰,也不影響,例如supervisor掛了,nimbus會從新調度
消息可靠性機制保證,ack機制
可維護:
storm UI
三、Storm處理數據的兩種模式:
實時請求應答模式(同步)
Client ----》DRPC Server ----》Spout---》Bolt-----》Return---》(返回給前面的drpc server 而後再返回給Client)
對應DRPC Server 有不一樣的Spout --》DRPC Spout ,Topology(拓撲結構)、ReturnResult
流式處理(異步)
Client---》MQ--->Sport------>Bolt1----->bolt2--------->Storage(redis、hbase、Mysql、mq等)
<----
Storm的wordCount
一、隨機生成數據
二、切割單詞
三、hash不一樣單詞到不一樣的任務上去