storm安裝、執行

fan_rockrock發表於2016-01-13
環境:centos6.4
軟體:
jzmq-master-----java與c++通訊的橋樑,有了它,就可以使用zeromp了(提供了介面,把資料放入到zeromq中)
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(這是zeromq原始碼,需要編譯安裝)
#編譯可能會出錯: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 -ivh libstdc++-devel-4.4.7-3.el6.x86_64.rpm
rpm -ivh gcc-c++-4.4.7-3.el6.x86_64.rpm
rpm -ivh libuuid-devel-2.17.2-12.9.el6.x86_64.rpm


./configure
make 編譯
make install 安裝






2.編譯安裝JZMQ:
unzip jzmq-master.zip -d /itcast
cd /itcast/jzmq-master
./autogen.sh
#報錯:autogen.sh: error: could not find libtool. libtool is required to run autogen.sh. 缺少libtool
yum install libtool
或者手動安裝
rpm -ivh autoconf-2.63-5.1.el6.noarch.rpm 
rpm -ivh automake-1.11.1-4.el6.noarch.rpm 
rpm -ivh libtool-2.2.6-15.5.el6.x86_64.rpm


./autogen.sh 產生configure檔案
./configure
make
make install








3.編譯安裝Python(storm的啟動配置檔案是用python寫的,centos預設裝了python,可以which 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 -d /itcast
修改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後
臺程式(core程式,2>&1表示把標準錯誤輸出重定向到標準輸出,&表示在後臺執行)
,並放到後臺執行,啟動後可以通過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執行時需要傳入的引數。
./storm list:把任務列出來


2)停止Storm Topology:


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


 

相關文章