Storm流式計算小結 集群故障恢復

2021-08-03 03:20:55 字數 2962 閱讀 4408

storm由twitter開源,是乙個分布式、容錯的實時計算系統,基本由clojure寫的,但幾乎可以使用任何語言編寫應用程式,每秒可處理數以百萬計的訊息。

離線計算:資料批量獲取、傳輸、週期性批量計算、展示

流式計算:資料實時產生、傳輸、計算、展示

流式計算就是實時將源源不斷的資料收集並計算,盡可能快的得到計算結果,用storm來實時處理資料有低延遲、高可用、分布式、可擴充套件、資料不丟失等特點。流式計算一般架構為:flume集群從**系統實時收集資料,並臨時存放到kafka集群,storm集群消費並計算資料,最後把統計資料存入redis集群。代表技術有flume實時獲取資料、kafka/metaq實時資料儲存、storm/jstorm實時資料計算、redis實時結果快取、mysql|hbase持久化儲存等。

對比圖name

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 一句話總結 將源源不斷產生的資料實時收集並實時計算,盡可能快的得到...