1. 程式人生 > 實用技巧 >Storm-0.9.3安裝部署步驟

Storm-0.9.3安裝部署步驟

>>> hot3.png

Storm-0.9.3安裝部署步驟


摘抄地址:

http://www.cnblogs.com/panfeng412/archive/2012/11/30/how-to-install-and-deploy-storm-cluster.html

http://www.aboutyun.com/thread-6854-1-1.html

http://ju.outofmemory.cn/entry/118203

——————————————————————————————————————


Storm叢集中包含兩類節點:主控節點(Master Node)和工作節點(Work Node)。其分別對應的角色如下:

  • 主控節點(Master Node)上執行一個被稱為Nimbus的後臺程式,它負責在Storm叢集內分發程式碼,分配任務給工作機器,並且負責監控叢集執行狀態。Nimbus的作用類似於Hadoop中JobTracker的角色。
  • 每個工作節點(Work Node)上執行一個被稱為Supervisor的後臺程式。Supervisor負責監聽從Nimbus分配給它執行的任務,據此啟動或停止執行任務的工作程序。每一個工作程序執行一個Topology的子集;一個執行中的Topology由分佈在不同工作節點上的多個工作程序組成。

Storm叢集元件

Nimbus和Supervisor節點之間所有的協調工作是通過Zookeeper叢集來實現的。此外,Nimbus和Supervisor程序都是快速失敗(fail-fast)和無狀態(stateless)的;Storm叢集所有的狀態要麼在Zookeeper叢集中,要麼儲存在本地磁碟上。這意味著你可以用kill -9來殺死Nimbus和Supervisor程序,它們在重啟後可以繼續工作。這個設計使得Storm叢集擁有不可思議的穩定性。

——————————————————————————————————————————

搭建Zookeeper叢集

Storm使用Zookeeper協調叢集,由於Zookeeper並不用於訊息傳遞,所以Storm給Zookeeper帶來的壓力相當低。大多數情況下,單個節點的Zookeeper叢集足夠勝任,不過為了確保故障恢復或者部署大規模Storm叢集,可能需要更大規模節點的Zookeeper叢集(對於Zookeeper叢集的話,官方推薦的最小節點數為3個)。在Zookeeper叢集的每臺機器上完成以下安裝部署步驟:
1. 下載安裝Java JDK,官方下載連結為http://java.sun.com/javase/downloads/index.jsp

,JDK版本為JDK 6或以上。
2. 根據Zookeeper叢集的負載情況,合理設定Java堆大小,儘可能避免發生swap,導致Zookeeper效能下降。保守起見,4GB記憶體的機器可以為Zookeeper分配3GB最大堆空間。
3. 下載後解壓安裝Zookeeper包,官方下載連結為http://hadoop.apache.org/zookeeper/releases.html
4. 根據Zookeeper叢集節點情況,在conf目錄下建立Zookeeper配置檔案zoo.cfg:

  1. tickTime=2000
  2. dataDir=/var/zookeeper/
  3. clientPort=2181
  4. initLimit=5
  5. syncLimit=2
  6. server.1=zookeeper1:2888:3888
  7. server.2=zookeeper2:2888:3888
  8. server.3=zookeeper3:2888:3888
複製程式碼 5. 在dataDir目錄下建立myid檔案,檔案中只包含一行,且內容為該節點對應的server.id中的id編號。其中,dataDir指定Zookeeper的資料檔案目錄;其中server.id=host:port:port,id是為每個Zookeeper節點的編號,儲存在dataDir目錄下的myid檔案中,zookeeper1~zookeeper3表示各個Zookeeper節點的hostname,第一個port是用於連線leader的埠,第二個port是用於leader選舉的埠。
6. 啟動Zookeeper服務:
  1. bin/zkServer.sh start
複製程式碼 7. 通過Zookeeper客戶端測試服務是否可用:
  1. bin/zkCli.sh -server 127.0.0.1:2181
複製程式碼 ————————————————————————————————————————


機器劃分

10.134.84.93 Nimbus

10.139.37.57 Supervisor

10.139.18.45 Supervisor zookeeper

10.134.85.125 Supervisor zookeeper

10.134.74.59 Supervisor zookeeper

版本選擇

1. storm選擇使用最新版apache-storm-0.9.3,下載地址:

http://www.apache.org/dyn/closer.cgi/storm/apache-storm-0.9.3/apache-storm-0.9.3.tar.gz

2. storm依賴jdk6和python

2.1 機器已經安裝了jdk7,經試驗啟動storm時會報錯。因此選擇jdk6最新版6u45,下載地址:

http://www.oracle.com/technetwork/java/javase/downloads/java-archive-downloads-javase6-419409.html#jdk-6u45-oth-JPR

選擇

2.2 機器自帶python2.4.3,但storm依賴2.6以上版本,我們選擇使用2.7.9,下載地址:

https://www.python.org/downloads/release/python-279/

依賴環境準備

1. jdk安裝

1.1由於機器上已經安裝了預設的jdk7,在終端直接輸入java -version時會提示使用的是1.7

因此,需要把jdk6單獨安裝在一個目錄。

直接執行jdk-6u45-linux-x64.bin,如下:

1.2自動解壓完畢後,會在當前目錄生成jdk的資料夾,再把此資料夾mv到我們指定的JAVA_HOME地址,如/opt/local/jdk1.6.0_45,如下:

2. python安裝

2.1執行tar zxvf Python-2.7.9.tgz命令,解壓Python安裝包:

2.2解壓後,進行以下安裝步驟:

2.3經過./configure、make、make install後,預設python2.7安裝在/usr/local/bin/python2.7,而/usr/bin/python這個軟鏈引用的依然是2.4.3,可以做下替換,如下:

storm配置

1.在伺服器上解壓storm安裝包,紅色部分為需要修改的配置檔案:

2.修改conf/storm_env.ini,指定使用的java環境

3.修改conf/storm.yaml,指定strom的以下幾項配置:

#storm使用的zookeeper的伺服器域名,預設埠2181storm.zookeeper.servers:- “yf_18_45″- “sjs_85_125″- “sjs_74_59″#nimbus的節點nimbus.host: “sjs_84_93″

#資料儲存路徑

storm.local.dir: “/data/storm”

#本地日誌路徑

storm.log.dir: “/opt/logs/storm”

#supervisor的槽位數及埠號,每個埠號表示一個槽位

supervisor.slots.ports:

- 6700

- 6701

- 6702

- 6703

#指定drpc伺服器

drpc.servers:

- “yf_18_45″

- “sjs_85_125″

- “sjs_74_59″

- “yf_37_57″

4. 在每個storm節點進行以上安裝步驟,其中storm可在一臺機器上配置好後再scp到其他各臺伺服器。

啟動storm

1. 在nimbus節點啟動nimbus、storm-ui和logviewer:

bin/storm nimbus &

bin/storm ui &

bin/storm logviewer &

3.在各supervisor節點啟動supervisor和logviewer:

bin/storm supervisor &

bin/storm logviewer &

驗證

1.訪問http://10.134.84.93:8080,檢視ui是否正常,supervisor數為4,free slot數為16

2.提交測試storm程式。

bin/storm jar examples/storm-starter/storm-starter-topologies-0.9.3.jar storm.starter.ExclamationTopology ExclamationTopology


轉載於:https://my.oschina.net/repine/blog/609187