1. 程式人生 > >storm詳細部署步驟

storm詳細部署步驟

環境:centos6.4
軟體:

jzmq-master-----java與c++通訊的橋樑,有了它,就可以使用zeromp了
storm-0.8.2
zeromq-2.1.7-----號稱史上最牛逼的訊息佇列(用c++寫的)
zookeeper-3.4.5


1.編譯安裝ZMQ:

tar -xzf zeromq-2.1.7.tar.gz
cd zeromq-2.1.7
./configure
#編譯可能會出錯:configure: error: Unable to find a working C++ compiler
#安裝一下依賴的rpm包:libstdc++-devel gcc-c++ 
可以上網的情況下: 
yum install gcc-c++
虛擬機器不能上網情況:首先到http://mirrors.163.com/centos/6.4/os/x86_64/Packages/ 下載rpm
rpm -i libstdc++-devel-4.4.7-3.el6.x86_64.rpm
rpm -i gcc-c++-4.4.7-3.el6.x86_64.rpm
rpm -i libuuid-devel-2.17.2-12.9.el6.x86_64.rpm

./configure
make
make install

2.編譯安裝JZMQ:

cd jzmq
./autogen.sh
#報錯:autogen.sh: error: could not find libtool. libtool is required to run autogen.sh. 缺少libtool
yum install libtool
或者手動安裝
rpm -i autoconf-2.63-5.1.el6.noarch.rpm 
rpm -i automake-1.11.1-4.el6.noarch.rpm 
rpm -i libtool-2.2.6-15.5.el6.x86_64.rpm

./configure
make
make install


3.編譯安裝Python(storm的啟動配置檔案是用python寫的):

tar –zxvf Python-2.6.6.tgz
cd Python-2.6.6
./configure
make
make install

下載並解壓Storm釋出版本
下一步,需要在Nimbus和Supervisor機器上安裝Storm發行版本。

1. 下載Storm發行版本
wget https://dl.dropbox.com/u/133901206/storm-0.8.2.zip
2. 解壓到安裝目錄下:
unzip storm-0.8.1.zip
修改storm.yaml配置檔案
Storm發行版本解壓目錄下有一個conf/storm.yaml檔案,用於配置Storm。預設配置在這裡可以檢視。conf/storm.yaml中的配置選項將覆蓋defaults.yaml中的預設配置。


以下配置選項是必須在conf/storm.yaml中進行配置的:

1) storm.zookeeper.servers: Storm叢集使用的Zookeeper叢集地址,其格式如下:

storm.zookeeper.servers:
  - "111.222.333.444"
  - "555.666.777.888"
如果Zookeeper叢集使用的不是預設埠,那麼還需要storm.zookeeper.port選項。

2) storm.local.dir: Nimbus和Supervisor程序用於儲存少量狀態,如jars、confs等的本地磁碟目錄,需要提前建立該目錄並給以足夠的訪問許可權。
然後在storm.yaml中配置該目錄,如:
storm.local.dir: "/usr/storm/workdir"
3) java.library.path: Storm使用的本地庫(ZMQ和JZMQ)載入路徑,預設為"/usr/local/lib:/opt/local/lib:/usr/lib",
一般來說ZMQ和JZMQ預設安裝在/usr/local/lib 下,因此不需要配置即可。
4) nimbus.host: Storm叢集Nimbus機器地址,各個Supervisor工作節點需要知道哪個機器是Nimbus,以便下載Topologies的jars、confs等檔案,如:
nimbus.host: "111.222.333.444"
5) supervisor.slots.ports: 對於每個Supervisor工作節點,需要配置該工作節點可以執行的worker數量。每個worker佔用一個單獨的埠用於接收訊息,
該配置選項即用於定義哪些埠是可被worker使用的。預設情況下,每個節點上可執行4個workers,分別在6700、6701、6702和6703埠,如:
supervisor.slots.ports:
    - 6700
    - 6701
    - 6702
    - 6703
2.5 啟動Storm各個後臺程序
最後一步,啟動Storm的所有後臺程序。和Zookeeper一樣,Storm也是快速失敗(fail-fast)的系統,這樣Storm才能在任意時刻被停止,並且當程序重啟後被正確地恢復執行。這也是為什麼Storm不在程序內儲存狀態的原因,即使Nimbus或Supervisors被重啟,執行中的Topologies不會受到影響。

以下是啟動Storm各個後臺程序的方式:

Nimbus: 在Storm主控節點上執行"bin/storm nimbus >/dev/null 2>&1 &"啟動Nimbus後臺程式,並放到後臺執行;
Supervisor: 在Storm各個工作節點上執行"bin/storm supervisor >/dev/null 2>&1 &"啟動Supervisor後臺程式,並放到後臺執行;
UI: 在Storm主控節點上執行"bin/storm ui >/dev/null 2>&1 &"啟動UI後臺程式,並放到後臺執行,啟動後可以通過http://{nimbus host}:8080觀察叢集的worker資源使用情況、Topologies的執行狀態等資訊。
注意事項:

Storm後臺程序被啟動後,將在Storm安裝部署目錄下的logs/子目錄下生成各個程序的日誌檔案。
經測試,Storm UI必須和Storm Nimbus部署在同一臺機器上,否則UI無法正常工作,因為UI程序會檢查本機是否存在Nimbus連結。
為了方便使用,可以將bin/storm加入到系統環境變數中。
至此,Storm叢集已經部署、配置完畢,可以向叢集提交拓撲運行了。

3. 向叢集提交任務:

1)啟動Storm Topology:

storm jar allmycode.jar org.me.MyTopology arg1 arg2 arg3
其中,allmycode.jar是包含Topology實現程式碼的jar包,org.me.MyTopology的main方法是Topology的入口,arg1、arg2和arg3為org.me.MyTopology執行時需要傳入的引數。

2)停止Storm Topology:

storm kill {toponame}
其中,{toponame}為Topology提交到Storm叢集時指定的Topology任務名稱。