天天看點

storm叢集部署和配置過程詳解

  先整體介紹一下搭建storm叢集的步驟:

設定zookeeper叢集

安裝依賴到所有nimbus和worker節點

下載下傳并解壓storm釋出版本到所有nimbus和worker節點

配置storm.yaml

啟動相關背景程序

     我們知道storm通過zookeeper來協調整個叢集。zookeeper不是用來做消息傳遞,是以storm不會給zookeeper帶來很大的壓力。單節點的zookeeper在大多情形下是可以勝任的,但是如果你想得到更好的可靠性或者部署大叢集的話,你可能就需要一個大的zookeeper叢集。關于zookeeper的部署在這裡就不多做介紹,具體請參考:here。

     關于zookeeper的部署這裡再補充兩點:

把zookeeper運作在一個監督程序之下是非常關鍵的,因為zookeeper是一個fail-fast的程序,當它遇到任何錯誤的時候都會自動退出,具體請參考:  here

定時的去壓縮和轉移zookeeper資料也是非常關鍵的,因為zookeeper不具備壓縮和清楚資料機制,如果我們不設定一個cron管理這些資料,zookeeper産生的資料會很快的占滿磁盤,具體請參考: here

     ps:如果zookeeper啟動失敗,檢視一下它bin目錄下的zookeeper.out檔案,配置一下它的myid試試。

    storm需要依賴的是:

java 6

python 2.6.6     

     需要注意,storm對大多數版本的依賴都做了測試,但是storm并不保證對任何版本的依賴都能正常工作。

     下一步就是下載下傳解壓storm壓縮檔案到每一台機器,storm釋出版本可以從這裡下載下傳from

here。

     storm裡面有一個檔案conf/storm.yaml,它就是storm的配置檔案。關于這個檔案的所有預設值可以從這裡得到here。storm.yaml中的配置會覆寫掉default.yaml中的配置。下面配置一個叢集必須修改的配置:

     1) storm.zookeeper.servers:配置zookeeper叢集的清單

     如果你的zookeeper叢集使用的端口不是預設端口,那麼你還得配置storm.zookeeper.port。

     2) storm.local.dir :storm的nimbus和work程序需要一個目錄來存放一小部分狀态資料,比如jars、confs等等。我們需要在每台機器上建立這個目錄并且賦予其相應的權限。

     3) nimbus.host:worker節點需要知道哪個機器是master節點,以便自己從maser節點下載下傳jars和confs。

     4) supervisor.slots.ports:對于每一台worker機器,它決定了這台機器一共可以運作多少個worker程序。每個worker程序會獨占一個端口來接收消息,這個參數就是配置了哪些端口會配置設定給worker程序。如果你在這配置了5個端口,那麼storm将能配置設定5個worker程序給這台機器,如果配置3個端口,那麼storm也隻能配置設定3個worker程序。storm預設配置設定4個worker程序到6700,6701,6702,6703端口。比如:

     最後一步就是啟動所有storm相關守護程序。當然,把這些程序都納入到監督程序管理之下是很有必要的。storm也是一個fail-fast系統,這就意味着這些程序一但遇到異常就會終止。storm之是以會這麼設計,是為了它可以在任何時候安全的終止和在程序重新開機的時候恢複。這就是storm為不在程序中儲存相關狀态的原因,如果nimbus或supervisor節點重新開機,運作着的topoloies不會受到任何影響。下面就是啟動storm相關程序的指令:

nimbus:在master節點運作“bin/storm nimbus”

supervisor:在每一台worker節點運作“bin/storm supervisor”,supervisor程序負責在worker節點上啟動和停止相應的worker程序

ui:運作“bin/storm ui” ,一個通過頁面管理和展示storm叢集運作狀态的工具,可以通過“http://nimbus host:8080”來通路。     

    我們可以看到啟動storm服務程序相當簡單直接,storm産生的log會儲存在各台機器的storm/logs目錄中,storm通過logback管理它的日志,我們可以通過修改其logback.xml檔案來改變其log的目錄及内容。