【流式計算】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目錄裏面打日誌。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章