storm集羣操做指南

storm集羣操做指南

@(博客文章)[storm|大數據]ios

1、storm僞分佈式安裝

(一)環境準備

一、OS:debian 7
二、JDK 7.0apache

(二)安裝zookeeper

一、下載zookeeper並解壓
wget http://mirror.bit.edu.cn/apache/zookeeper/zookeeper-3.4.6/zookeeper-3.4.6.tar.gz
tar -zxvf zookeeper-3.4.6.tar.gz
二、準備配置文件
cd conf
cp zoo_sample.cfg zoo.cfg
三、啓動zookeeper
bin/zkServer.sh start
四、驗證zookeeper的狀態
bin/zkServer.sh status
輸出以下:
JMX enabled by default
Using config: /home/jediael/setupfile/zookeeper-3.4.6/bin/../conf/zoo.cfg
Mode: standalone安全

(三)安裝storm

一、下載storm並解壓
wget http://mirror.bit.edu.cn/apache/storm/apache-storm-0.9.4/apache-storm-0.9.4.tar.gz
tar -zxvf apache-storm-0.9.4.tar.gz
二、啓動storm服務器

nohup bin/storm nimbus &
   nohup bin/storm supervisor &
   nohup bin/storm ui &

三、查看進程jvm

jediael@jediael:~/setupfile/zookeeper-3.4.6$ jps | grep -v Jps
3235 supervisor
3356 core
3140 QuorumPeerMain
3214 nimbus

四、查看ui界面
http://ip:8080分佈式

(四)運行程序

一、根據《storm分佈式實時計算模式》第一章代碼及P41的修改,並打包上傳到服務器
二、運行job
storm jar word-count-1.0-SNAPSHOT.jar storm.blueprints.chapter1.v1.WordCountTopology wordcount-topology
三、在ui界面上能夠看到一個topology正在運行oop

2、storm集羣安裝

注意:先安裝zookeeper:http://blog.csdn.net/jinhong_lu/article/details/46519899大數據

(一)下載storm並解壓

wget http://mirror.bit.edu.cn/apache/storm/apache-storm-0.9.4/apache-storm-0.9.4.tar.gz
tar -zxvf apache-storm-0.9.4.tar.gz
並在home目錄中添加連接
ln -s src/apache-storm-0.9.4 stormui

(二)配置storm,在storm.yaml中添加如下內容

storm.zookeeper.servers:
     - "gdc-nn01-test"
     - "gdc-dn01-test"
     - "gdc-dn02-test"
nimbus.host: "gdc-nn01-test"
supervisor.slots.ports:
    - 6700
    - 6701
    - 6702
    - 6703
storm.local.dir: "/home/hadoop/storm/data」
#jvm setting

nimbus.childopts:"-4096m」
supervisor.childopts:"-Xmx4096m"
nimubs.childopts:"-Xmx3072m」

說明:
一、關於日誌
在初次運行storm程序時,可能會出現各類各樣的錯誤,通常錯誤都可在日誌中發現,在本例中,須要重點關注的日誌有:
(1)supervisor上的work日誌,位於$STORM_HOME/logs,若是集羣正常,但某個topology運行出現錯誤,通常能夠在這些work日誌中找到問題。最多見的是CLASSNOTFOUNDEXCEPTION, CLASSNOTDEFINDEXCEPTION,都是缺包致使的,將它們放入$STORM_HOME/lib便可。
(2)nimbus上的日誌,位於$STORM_HOME/logs,主要觀察整個集羣的狀態,有如下4個文件
access.log metrics.log nimbus.log ui.log
(3)kafka的日誌,位於$KAFKA_HOME/logs,觀察kafka是否運行正常。

2.關於emit與transfer(轉自http://www.reader8.cn/jiaocheng/20120801/2057699.html)
storm ui上emit和transferred的區別
最開始對storm ui上展現出來的emit和transferred數量不是很明白, 因而在storm-user上google了一把, 發現有人也有跟我同樣的困惑, nathan作了詳細的回答:
emitted欄顯示的數字表示的是調用OutputCollector的emit方法的次數.
transferred欄顯示的數字表示的是實際tuple發送到下一個task的計數.
若是一個bolt A使用all group的方式(每個bolt都要接收到)向bolt B發射tuple, 此時bolt B啓動了5個task, 那麼trasferred顯示的數量將是emitted的5倍.
若是一個bolt A內部執行了emit操做, 可是沒有指定tuple的接受者, 那麼transferred將爲0.

這裏還有關於spout, bolt之間的emitted數量的關係討論, 也解釋了個人一些疑惑:
有 的bolt的execture方法中並無emit tuple, 可是storm ui中依然有顯示emitted, 主要是由於它調用了ack方法, 而該方法將emit ack tuple到系統默認的acker bolt. 所以若是anchor方式emit一個tuple, emitted通常會包含向acker bolt發射tuple的數量.

另外collector.emit(new Values(xxx))和collector.emit(tuple, new Values(xxx)) 這兩種不一樣的emit方法也會影響後面bolt的emitted和transferred, 若是是前者, 則後續bolt的這兩個值都是0, 由於前一個emit方法是非安全的, 再也不使用acker來進行校驗.

(三)關於包依賴的關係

注意、重點:storm運行topology時會有一大堆的包依賴問題,建議保存好現有的包,在新集羣中直接導入便可,並且都放到集羣中的每個機器上。

(四)文件同步

將storm整個目錄scp到dn01,dn02,dn03

(五)啓動storm

(1)在nn01上啓動nimbus,ui
nohup bin/storm nimbus &
nohup bin/storm ui &
(2)在dn0[123]上啓動
nohup bin/storm superivsor &

(六)驗證

(1)打開頁面看狀態
http://192.168.169.91:8080/index.html
(2)在example目錄下執行一個示例topology
$ /home/hadoop/storm/bin/storm jar storm-starter-topologies-0.9.4.jar storm.stater.WordCountTopology word-count

而後再到ui上看看是否已經提交成功

3、storm集羣的啓停

storm有2種啓動方式:命令模式以及supervisor模式

(一)命令模式

一、在nimbus上啓動nimbus及ui

nohup bin/storm nimbus &
nohup bin/storm ui &

(2)在各個supervisor上啓動superviosr與logviewer

nohup bin/storm superivsor &
nohup bin/storm superivsor &

(3)若是有須要的話,啓動drpc

nohup bin/storm drpc &

(二)supervisor模式

待補充

相關文章
相關標籤/搜索