storm詳細部署步驟
阿新 • • 發佈:2018-11-13
環境: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任務名稱。