storm利用了分佈式系統中經典的master/slave架構html
主控節點:這裏稱之爲nimbus,負責在集羣分發任務(Topology)的代碼以及監控等。java
工做節點:這裏稱之爲Supervisor,工做節點跟傳動主從不一樣之處在於,其並非本身直接執行任務。在接受到一個任務的時候,Supervisor會啓動一個或多個進程(稱之爲worker),來處理任務。因此實際上,任務最終都是分配到了worker上。python
須要一下環境:git
zookeeper集羣github
java 6 以上apache
Python 2.6.6 以上架構
ZMQ 2.1.7app
JZMQ 分佈式
Storm使用Zookeeper協調集羣,因爲Zookeeper並不用於消息傳遞,因此Storm給Zookeeper帶來的壓力至關低。大多數狀況下,單個節點的Zookeeper集羣足夠勝任,不過爲了確保故障恢復或者部署大規模Storm集羣,可能須要更大規模節點的Zookeeper集羣。具體安裝步驟這裏不作描述。測試
下載jdk包 解壓,配置環境變量。具體步驟這裏不作描述。
下載:
wget http://www.python.org/ftp/python/2.6.6/Python-2.6.6.tar.bz2
解壓安裝:
tar –jxvf Python-2.6.6.tar.bz2 cd Python-2.6.6 ./configure make make install
測試:
$ python -V Python 2.6.6
下載解壓安裝:
wget http://download.zeromq.org/zeromq-2.1.7.tar.gz tar -xzf zeromq-2.1.7.tar.gz cd zeromq-2.1.7 ./configure make sudo make install
安裝過程當中可能會發現須要安裝其餘類庫,我這裏面安裝時提示須要uuid,安裝便可
yum install libuuid-devel
git clone https://github.com/nathanmarz/jzmq.git cd jzmq ./autogen.sh ./configure make sudo make install
安裝完成所需的依賴以後,咱們終於能夠安裝storm。根據開發的軟件選擇合適版本的storm安裝。這裏選擇的是storm-0.9.7發佈版
下載解壓:
wget http://mirror.bit.edu.cn/apache/storm/apache-storm-0.9.7/apache-storm-0.9.7.tar.gz tar -xvzf apache-storm-0.9.7.tar.gz
配置conf/storm.yaml文件,storm有默認配置文件,storm.yaml中的配置項會覆蓋默認配置,經過如下連接能夠查看默認配置:https://github.com/apache/storm/blob/master/conf/defaults.yaml
這裏須要修改的配置項有(每個配置項前面要留一個空格):
storm.zookeeper.servers: Storm集羣使用的Zookeeper集羣地址
storm.zookeeper.servers: - "192.168.1.112" - "192.168.1.113"
storm.local.dir: Nimbus和Supervisor進程用於存儲少許狀態,如jars、confs等的本地磁盤目錄,須要提早建立該目錄並給以足夠的訪問權限。
storm.local.dir: "/opt/storm/data"
nimbus.host: Storm集羣Nimbus機器地址.
nimbus.host: "192.168.1.112"
supervisor.slots.ports: 對於每一個Supervisor工做節點,須要配置該工做節點能夠運行的worker數量。每一個worker佔用一個單獨的端口用於接收消息,該配置選項即用於定義哪些端口是可被worker使用的。默認配置有4端口可用,若是需改變或更多能夠進行配置。
supervisor.slots.ports: - 6700 - 6701 - 6702 - 6703
ui.port: storm爲咱們提供了一個後臺程序,能夠監控資源運行狀態,該端口配置用於咱們訪問管理頁面。http://192.168.1.111:8088/index.html
ui.port: 8088
能夠在logs目錄下查看每一個後臺程序的啓動日誌。
提交命令
storm jar path/to/allmycode.jar(jar包路徑) path.main.class(主類main) arg1 arg2 arg3(main方法參數)
這裏提交命令:
./apache-storm-0.9.7/bin/storm jar Getting-Started-0.0.1-SNAPSHOT-jar-with-dependencies.jar sfpay.TopologyMain wordcountapp
查看運行狀態:
./bin/storm list
Topology_name Status Num_tasks Num_workers Uptime_secs ------------------------------------------------------------------- wordcountapp ACTIVE 4 1 3707