天天看點

【流式計算】Twitter Storm: 搭建storm叢集

轉自網址: 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叢集的一些主要步驟:

  1. 搭建ZooKeeper叢集。
  2. 在Nimbus和所有工作機器上面安裝所有的軟體。
  3. 在Nimbus和所有工作機器上下載下傳并解壓storm的發行版。
  4. 對storm.yaml進行一些必要的配置。
  5. 使用storm腳本來啟動所有的必要的程序(nimbus, supervisor, worker)。

搭建ZooKeeper叢集

storm使用zookeeper來協調整個叢集, 但是要注意的是storm并不用zookeeper來傳遞消息。是以zookeeper上的負載是非常低的,單個節點的zookeeper在大多數情況下都已經足夠了, 但是如果你要部署大一點的storm叢集, 那麼你需要的zookeeper也要大一點。關于如何部署zookeeper,可以看這裡。

關于如何部署zookeeper有些需要注意的地方:

  1. 對zookeeper做好監控非常重要, zookeeper是fail-fast的系統,隻要出現什麼錯誤就會退出, 是以一定要監控,更多細節看這裡。
  2. 一定要配置一個cron job來壓縮zookeeper的資料和業務日志。zookeeper自己是不會去壓縮這些的,是以你如果不設定一個cron job, 那麼你很快就會磁盤不夠用了,更多細節看這裡。

在Nimbus和工作機器上安裝必要軟體

接下來需要安裝Nimbus和工作機器上面的一些storm所依賴的軟體。

  1. ZeroMQ 2.1.7
  2. JZMQ
  3. Java 6
  4. Python 2.6.6
  5. 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

storm.zookeeper.servers:

- "111.222.333.444"

- "555.666.777.888"

2. storm.local.dir Nimbus和Supervisor在本地磁盤上需要一個目錄來存儲一些狀态資訊(jar包, 配置檔案之類的東西)你應該在每台機器上建立那個目錄,配置設定正确的權限,比如:

幫助

1

storm.local.dir: "/mnt/storm"

3. java.library.path 這是storm所依賴的本地依賴(ZeroMQ和JZMQ)的加載位址, 預設的是:/usr/local/lib:/opt/local/lib:/usr/lib, 大多情況下是對的,是以你應該不用更改這個配置。

4. nimbus.host 所有工作機器需要nimbus機器的位址, 這樣它們才知道去哪裡擷取jar包和配置檔案:

幫助

1

nimbus.host: "111.222.333.44"

5. supervisor.slots.ports 對于每一台工作機器,這個配置指定在這台工作機器上運作多少工作程序, 每個程序使用一個獨立端口來接收消息,這個配置同時也指定使用哪些端口。如果你在這裡定義5個端口, storm會在這個機器上最多配置設定5個工作程序。如果配置設定3個端口,那麼最多配置設定3個程序。預設的配置是4個:

幫助

1 2 3 4 5

supervisor.slots.ports:

- 6700

- 6701

- 6702

- 6703

啟動守護程序

最後一步是啟動storm的所有守護程序。還是前面說的那樣,對于每個程序都要有監控!storm是一個fail-fast系統,出現什麼不可預知的錯誤的時候它都會退出的。storm被設計成在任何時候都可以安全退出, 在任何時候都能正确重新開機, 這就是storm為什麼不線上程記憶體儲狀态 — 如果Nimbus和Supervisor重新開機的話,不會影響正在運作的topology。下面介紹如何啟動這些線程:

  1. Nimbus 在Nimbus機器上運作bin/storm nimbus
  2. Supervisor 在每台工作機器上運作bin/storm supervisor, supervisor負責啟動和終止工作機器上的工作程序。
  3. UI storm UI是一個可以檢視storm運作狀态的的一個網站,通過bin/storm ui運作,通路位址: http://{nimbus.host}:8080/。

就像你能看到的一樣,運作storm叢集很簡單。這些程序會往你解壓storm發行版的目錄的子目錄logs目錄裡面打日志。

繼續閱讀