storm由twitter開源,是乙個分布式、容錯的實時計算系統,基本由clojure寫的,但幾乎可以使用任何語言編寫應用程式,每秒可處理數以百萬計的訊息。對比圖name離線計算:資料批量獲取、傳輸、週期性批量計算、展示
流式計算:資料實時產生、傳輸、計算、展示
流式計算就是實時將源源不斷的資料收集並計算,盡可能快的得到計算結果,用storm來實時處理資料有低延遲、高可用、分布式、可擴充套件、資料不丟失等特點。流式計算一般架構為:flume集群從**系統實時收集資料,並臨時存放到kafka集群,storm集群消費並計算資料,最後把統計資料存入redis集群。代表技術有flume實時獲取資料、kafka/metaq實時資料儲存、storm/jstorm實時資料計算、redis實時結果快取、mysql|hbase持久化儲存等。
storm
hadoop
explain
角色nimbus
jobtracker
專案經理
-supervisor
tasktracker
開發組長、產品經理
-worker
child
開發人員
應用名稱
topology
job任務名稱
程式設計介面
spout/bolt
開發人員中的兩種角色,一種是伺服器開發、一種是客戶端開發
核心元件:
nimbus:負責資源分配和任務排程;
supervisor:負責接受nimbus分配的任務,啟動和停止屬於自己管理的worker程序。可通過配置檔案設定當前supervisor上啟動多少個worker,即設定槽數;
worker:執行具體處理元件邏輯的程序。worker執行的任務型別只有兩種,一種是spout任務,一種是bolt任務;
task:worker中每乙個spout/bolt的執行緒稱為乙個task. 在storm0.8之後,task不再與物理執行緒對應,不同spout/bolt的task可能會共享乙個物理執行緒,該執行緒稱為executor。
程式設計模型:
topology:storm中執行的乙個實時應用程式的名稱(拓撲);
spout:在乙個topology中獲取源資料流的元件。通常情況下spout會從外部資料來源中讀取資料,然後轉換為topology內部的源資料;
bolt:接受資料然後執行處理的元件,使用者可以在其中執行自己想要的操作;
tuple:一次訊息傳遞的基本單元,理解為一組訊息就是乙個tuple;
stream:表示資料的流向。
我們使用storm開發程式時,會使用storm ui來觀察所啟程序,當storm ui的supervisor掛掉的時候,需要重啟supervisor,有時候還要重啟zookeeper,還有時候因為storm啟動程序太多,處理量太大,導致cpu負荷過高,其所在機器會宕機,得聯絡運維人員到機房重啟機器。以下為樓主總結的幾點步驟:當發生宕機的時候,我們在重啟supervisor時會報
halting process: ("error when processing an event")
的錯誤。原因是伺服器突然斷電,未能正常退出storm導致。需要到storm ui中(或檢視其配置檔案),刪除storm.local.dir
指向的supervisor和workers兩個資料夾。(注:在刪除資料夾前,需要先把supervisor給kill掉,可手工kill -9 程序號 程序號 …,與此同時,supervisor和workers兩個資料夾可能會刪除不乾淨,原因在於殘留了其他使用者啟動的碎片)使用jps -l命令,把supervisor所在的節點的worerk全部kill掉,再重啟supervisor。登入storm-0,必須使用storm賬戶重啟zookeeper和storm。
1.使用jps -l檢視storm-0,zookeeper、nimbus、ui都有啟動則正常;
2.使用jps -l檢視storm-1,zookeeper、supervisor都有啟動則正常,如果有不正常的要重啟,需要先手動kill掉worker;
3.同理,storm-2;
4.當zookeeper宕機時,可通過環境變數$path,來查詢到zookeeper目錄。
進入其bin目錄之後的命令有–>
檢視啟動情況:zkservers.sh status
啟動:zkservers.sh start
然後通過cd $storm_home/bin
,啟動
storm-0啟動nimbus和ui
nohup ./storm nimbus &
nohup ./storm ui &
storm-1和storm-2啟動supervisor
nohup ./storm supervisor &
實際上,在樓主使用的環境出現storm-1頻繁宕機的事故,後經排查,storm-1和storm-2的work沒有負載均衡,是因為啟動supervisor時,加了nohup,不加這個就可以負載均衡,原因未明。把nohup省略掉,即可解決storm-1的問題。
storm流式計算之集群安裝
2.假設你的集群有hadoop01,hadoop02,hadoop03三個節點,首先在hadoop01中解壓安裝包。命令如下 tar zxvf apache storm 0.9.5.tar.gz c servers storm 3.修改配置檔案 vi servers storm conf storm...
Storm流式計算
下面以水廠加工的例子進行講解。人們要想喝到自來水。1 是不是需要水幫浦在水源地進行抽水 2 將抽到的水放到蓄水池裡作進一步的處理。第乙個蓄水池的實現的功能就是做沉澱。第二個蓄水池的功能就是過濾。第三個蓄水池的功能就是消毒。之後產生蓄水。3 要想上面的過程完美的進行,是不是需要乙個中控室,來告訴這些水...
流式計算storm介紹
流式計算是什麼 流式計算 資料實時產生 資料實時傳輸 資料實時計算 實時展示 代表技術 flume實時獲取資料 kafka metaq實時資料儲存 storm jstorm實時資料計算 redis實時結果快取 持久化儲存 mysql 一句話總結 將源源不斷產生的資料實時收集並實時計算,盡可能快的得到...