Storm-1.2.2完全分散式安裝

兵工廠三劍客發表於2018-06-06

環境:zookeeper-3.4.10,ubuntu-16.0.4,jdk1.8.0_111

我這裡在四臺機器上安裝,分別是Desktop(Master),Server1,(Slave1),Server2(Slave2),Server3(Slave3)

可以將Storm中的nimbus看作是Hadoop中的Master,將supervisor看作是Slave。

安裝Storm之前,需要先安裝zookeeper,點選這裡檢視zookeeper安裝教程

1.解壓

    將storm解壓到指定目錄:    

zhang@Desktop:~$ tar -zxvf apache-storm-1.2.2.tar.gz -C /usr/local

2.修改配置檔案

    修改conf目錄中的storm.yaml檔案:    

storm.local.dir: "/usr/local/apache-storm-1.2.2/localdir"
storm.zookeeper.port: 2181
storm.zookeeper.servers:
      - "Desktop"
      - "Server1"
      - "Server2"
      - "Server3"
nimbus.seeds: ["Desktop"]
ui.host: 0.0.0.0
ui.port: 8080
supervisor.slots.ports:
      - 6700
      - 6701
      - 6702
      - 6703

在設定引數時,不要使用製表符代替空格。

3.新建目錄    

mkdir -p /usr/local/apache-storm-1.2.2/localdir

4.分發檔案    

zhang@Desktop:/usr/local$ scp -r ./apache-storm-1.2.2 zhang@Server1:/usr/local
zhang@Desktop:/usr/local$ scp -r ./apache-storm-1.2.2 zhang@Server2:/usr/local
zhang@Desktop:/usr/local$ scp -r ./apache-storm-1.2.2 zhang@Server3:/usr/local

5.新增環境變數

    在每個節點的/etc/profile上新增以下內容:    

export STORM_HOME=/usr/local/apache-storm-1.2.2
export PATH=${STORM_HOME}/bin:$PATH

    每個節點新增完後都執行:source /etc/profile

6.啟動storm

    先啟動zkServer

    a)在Desktop(Master)上啟動nimbus程式

        zhang@Desktop:~$ storm nimbus &

        也可以使用:storm nimbus >/dev/null 2>&1 &          該命令下面會有解釋

    b)在Desktop(Master)上啟動UI程式

        zhang@Desktop:~$ storm ui &

    c)在所有的Slave上啟動supervisor程式

        zhang@Server1:~$ storm supervisor &

        zhang@Server2:~$ storm supervisor &

        zhang@Server3:~$ storm supervisor &

 7.web登入檢視

    

    

    

   8.可能遇到的問題

a)web不能正常登入

如果登入web的時候,一直顯示loading summary,看不到任何明確的資訊。先檢視logs目錄下的日誌,一般是顯示超時之類的。這應該是某個程式沒有啟動成功。對叢集中的每個節點使用jps命令檢視,看是否有顯示config_value,config_value是沒有啟動成功,對該節點重新啟動(不是重啟主機,是重啟sotrm相關程式)。

如果登入web的時候,網頁進不去,看不到內容(連loading summary都看不到),一直在連結,也沒有提示超時之類的,換瀏覽器也不行,對所有節點全部重啟(不是重啟主機,是重啟sotrm相關程式)。

如果kill或者kill -9都殺不掉某個程式,我暫時沒有找到解決方法,直接重啟主機。

如果登入進去可以看到nimbus或者supervisor等資訊,某些資訊看不到(一直顯示loading summary)。可以換個瀏覽器試試,用谷歌可以正常顯示,用的360就不行,而且360每次都顯示loading summary。

以上幾個問題是我部署完啟動時遇到的問題。

b)nimbus或supervisor不能啟動

雖然執行了啟動命令但是在命令執行完後程式又退出了。首先檢視日誌。如果是nimbus不能啟動,檢視nimbus.log。

一般會有這樣的資訊:

2018-06-07 10:02:30.982 o.a.s.s.o.a.z.ClientCnxn main-SendThread(Desktop:2181) [INFO] Socket connection established to Desktop/192.168.244.3:2181, initiating session
2018-06-07 10:02:30.986 o.a.s.s.o.a.z.ClientCnxn main-SendThread(Desktop:2181) [INFO] Unable to read additional data from server sessionid 0x0, likely server has closed socket, closing socket connection and attempting reconnect

2018-06-07 10:02:31.311 o.a.s.s.o.a.z.ClientCnxn main-SendThread(Desktop:2181) [INFO] Opening socket connection to server Server1/192.168.244.4:2181. Will not attempt to authenticate using SASL (unknown error)

這個是zkServer掛掉了。雖然執行jps可以看到QuorumPeerMain還在,但是實際上zkServer已經掛了。


這個是zkServer存活數只有一半(或小於)配置數引起的。比如zookeeper部署了4臺,但是隻起了2臺,預設zkServer狀態就是掛掉了。當再起一臺zkServer,即存活數達到3臺,超過1半了,就可以檢視狀態了。也就是說zkServer叢集已經執行起來了。

前面的問題也就解釋通了,雖然可以看到zkServer程式,但是因為存活數不足,預設zkServer沒有執行起來,所以也就無法啟動nimbus或者supervisor了。


storm叢集啟動停止指令碼

其他參考:

轉載自:關於storm nimbus > /dev/null 2>&1

關於bin/storm nimbus >/dev/null 2>&1 &    

bin/storm nimbus >/dev/null 2>&1 & 
這裡寫圖片描述
如圖所示: 
bin/storm nimbus會有兩個輸出,一個標準輸出,一個錯誤輸出 
2>&1的作用是將 2即錯誤輸出 的內容重定向到&1即標準輸出中,然後>/dev/null是將兩者的結果輸入到/dev/null中,相當於拋棄掉。至於最後一個&,因為storm會一直執行,不會自動停掉,頁面上就會不停的有內容。&的作用就是將storm拿到後臺執行。   



相關文章