轉自網址: http://xumingming.sinaapp.com/179/twitter-storm-搭建storm叢集/
本文翻譯自: https://github.com/nathanmarz/storm/wiki/Setting-up-a-Storm-cluster。
這篇文章介紹搭建storm叢集并運作的步驟。如果你使用AWS, 那麼你可以看一下storm-deploy項目,storm-deploy項目使得在Amazon EC2上安裝,配置storm叢集完全自動化。這篇文章同時也幫你配置好Ganglia以監控CPU, 硬碟以及網絡資源的使用情況。
下面是搭建storm叢集的一些主要步驟:
- 搭建ZooKeeper叢集。
- 在Nimbus和所有工作機器上面安裝所有的軟體。
- 在Nimbus和所有工作機器上下載下傳并解壓storm的發行版。
- 對storm.yaml進行一些必要的配置。
- 使用storm腳本來啟動所有的必要的程序(nimbus, supervisor, worker)。
搭建ZooKeeper叢集
storm使用zookeeper來協調整個叢集, 但是要注意的是storm并不用zookeeper來傳遞消息。是以zookeeper上的負載是非常低的,單個節點的zookeeper在大多數情況下都已經足夠了, 但是如果你要部署大一點的storm叢集, 那麼你需要的zookeeper也要大一點。關于如何部署zookeeper,可以看這裡。
關于如何部署zookeeper有些需要注意的地方:
- 對zookeeper做好監控非常重要, zookeeper是fail-fast的系統,隻要出現什麼錯誤就會退出, 是以一定要監控,更多細節看這裡。
- 一定要配置一個cron job來壓縮zookeeper的資料和業務日志。zookeeper自己是不會去壓縮這些的,是以你如果不設定一個cron job, 那麼你很快就會磁盤不夠用了,更多細節看這裡。
在Nimbus和工作機器上安裝必要軟體
接下來需要安裝Nimbus和工作機器上面的一些storm所依賴的軟體。
- ZeroMQ 2.1.7
- JZMQ
- Java 6
- Python 2.6.6
- unzip
上面同時也列出了storm所依賴的軟體的版本, 如果版本不一樣可能運作不了。
如果安裝ZeroMQ和JZMQ的時候有問題,可以看下安裝依賴。
在Nimbus和工作機器上下載下傳并解壓storm發行版
接下來, 下載下傳storm的發行版,然後解壓。storm的發行版可以在這裡找到。
配置storm.yaml
storm發行版在conf/storm.yaml包含了一些配置資訊。你可以在這裡看到預設配置。storm.yaml裡面的配置比default.xml的優先級要高, 下面是要運作storm叢集所必須的配置:
1. storm.zookeeper.servers 這個配置storm叢集使用的zookeeper叢集的位址,比如:
幫助
1 2 3 | |
2. storm.local.dir Nimbus和Supervisor在本地磁盤上需要一個目錄來存儲一些狀态資訊(jar包, 配置檔案之類的東西)你應該在每台機器上建立那個目錄,配置設定正确的權限,比如:
幫助
1 | |
3. java.library.path 這是storm所依賴的本地依賴(ZeroMQ和JZMQ)的加載位址, 預設的是:/usr/local/lib:/opt/local/lib:/usr/lib, 大多情況下是對的,是以你應該不用更改這個配置。
4. nimbus.host 所有工作機器需要nimbus機器的位址, 這樣它們才知道去哪裡擷取jar包和配置檔案:
幫助
1 | |
5. supervisor.slots.ports 對于每一台工作機器,這個配置指定在這台工作機器上運作多少工作程序, 每個程序使用一個獨立端口來接收消息,這個配置同時也指定使用哪些端口。如果你在這裡定義5個端口, storm會在這個機器上最多配置設定5個工作程序。如果配置設定3個端口,那麼最多配置設定3個程序。預設的配置是4個:
幫助
1 2 3 4 5 | |
啟動守護程序
最後一步是啟動storm的所有守護程序。還是前面說的那樣,對于每個程序都要有監控!storm是一個fail-fast系統,出現什麼不可預知的錯誤的時候它都會退出的。storm被設計成在任何時候都可以安全退出, 在任何時候都能正确重新開機, 這就是storm為什麼不線上程記憶體儲狀态 — 如果Nimbus和Supervisor重新開機的話,不會影響正在運作的topology。下面介紹如何啟動這些線程:
- Nimbus 在Nimbus機器上運作bin/storm nimbus
- Supervisor 在每台工作機器上運作bin/storm supervisor, supervisor負責啟動和終止工作機器上的工作程序。
- UI storm UI是一個可以檢視storm運作狀态的的一個網站,通過bin/storm ui運作,通路位址: http://{nimbus.host}:8080/。
就像你能看到的一樣,運作storm叢集很簡單。這些程序會往你解壓storm發行版的目錄的子目錄logs目錄裡面打日志。