storm叢集部署和配置過程詳解
阿新 • • 發佈:2018-12-31
先整體介紹一下搭建storm叢集的步驟:
- 設定zookeeper叢集
- 安裝依賴到所有nimbus和worker節點
- 下載並解壓storm釋出版本到所有nimbus和worker節點
- 配置storm.yaml
- 啟動相關後臺程序
1 首先配置zookeeper叢集
我們知道storm通過zookeeper來協調整個叢集。zookeeper不是用來做訊息傳遞,因此storm不會給zookeeper帶來很大的壓力。單節點的zookeeper在大多情形下是可以勝任的,但是如果你想得到更好的可靠性或者部署大叢集的話,你可能就需要一個大的zookeeper叢集。關於zookeeper的部署在這裡就不多做介紹,具體請參考:- 把zookeeper執行在一個監督程序之下是非常關鍵的,因為zookeeper是一個fail-fast的程序,當它遇到任何錯誤的時候都會自動退出,具體請參考: here
- 定時的去壓縮和轉移zookeeper資料也是非常關鍵的,因為zookeeper不具備壓縮和清楚資料機制,如果我們不設定一個cron管理這些資料,zookeeper產生的資料會很快的佔滿磁碟,具體請參考: here
2 安裝依賴到nimbus和worker節點
- Java 6
- Python 2.6.6
3 下載解壓storm釋出版本到nimbus和worker節點
下一步就是下載解壓storm壓縮檔案到每一臺機器,storm釋出版本可以從這裡下載from here。4 配置storm.yaml檔案
storm裡面有一個檔案conf/storm.yaml,它就是storm的配置檔案。關於這個檔案的所有預設值可以從這裡得到here。storm.yaml中的配置會覆蓋掉default.yaml中的配置。下面配置一個叢集必須修改的配置: storm.zookeeper.servers:
- "111.222.333.444"
- "555.666.777.888"
如果你的zookeeper叢集使用的埠不是預設埠,那麼你還得配置storm.zookeeper.port。
2) storm.local.dir :storm的nimbus和work程序需要一個目錄來存放一小部分狀態資料,比如jars、confs等等。我們需要在每臺機器上建立這個目錄並且賦予其相應的許可權。
storm.local.dir: "/mnt/storm"
3) nimbus.host:worker節點需要知道哪個機器是master節點,以便自己從maser節點下載jars和confs。
nimbus.host: "111.222.333.44"
4) supervisor.slots.ports:對於每一臺worker機器,它決定了這臺機器一共可以執行多少個worker程序。每個worker程序會獨佔一個埠來接收訊息,這個引數就是配置了哪些埠會分配給worker程序。如果你在這配置了5個埠,那麼storm將能分配5個worker程序給這臺機器,如果配置3個埠,那麼storm也只能分配3個worker程序。storm預設分配4個worker程序到6700,6701,6702,6703埠。比如:
supervisor.slots.ports:
- 6700
- 6701
- 6702
- 6703
5 通過storm命令執行storm相關的守護程序
最後一步就是啟動所有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”來訪問。