Storm 集羣安裝配置

本文詳細介紹了 Storm 集羣的安裝配置方法。若是須要在 AWS 上安裝 Storm,你應該看一下 storm-deploy 項目。storm-deploy 能夠自動完成 E2 上 Storm 集羣的準備、配置、安裝的所有過程,同時還設置好了 Ganglia,方便監控 CPU、磁盤以及網絡的使用信息。html

若是你在使用 Storm 集羣時遇到問題,請先查看「問題與解決」一文中是否已有相應的解決方案。若是檢索不到有效的解決方法,請向社區的郵件列表發送關於問題的郵件。git

如下是安裝 Storm 的步驟:github

  1. 安裝 ZooKeeper 集羣;
  2. 在各個機器上安裝運行集羣所須要的依賴組件;
  3. 下載 Storm 安裝程序並解壓縮到集羣的各個機器上;
  4. 在 storm.yaml 中添加集羣配置信息;
  5. 使用 「storm」 腳本啓動各機器後臺進程。

安裝 ZooKeeper 集羣

Storm 使用 ZooKeeper 來保證集羣的一致性。集羣中 ZooKeeper 並非用來進行消息傳遞的,因此 Storm 對 ZooKeeper 的負載至關低。雖然在大部分場景下單點 ZooKeeper 也勉強夠用,可是若是你須要更可靠的 HA 機制或者須要部署大規模 Storm 集羣,你最好配置一個 ZooKeeper 集羣。ZooKeeper 集羣的部署說明請參考此文apache

關於 ZooKeeper 部署的幾點說明:瀏覽器

  1. ZooKeeper 必須在監控模式下運行。由於 ZooKeeper 是個快速失敗系統,若是遇到了故障,ZooKeeper 服務會主動關閉。更多詳細信息請參考此文
  2. 須要設置一個 cron 服務來定時壓縮 ZooKeeper 的數據與事務日誌。由於 ZooKeeper 的後臺進程不會處理這個問題,若是不配置 cron,ZooKeeper 的日誌會很快填滿磁盤空間。更多詳細信息請參考此文

安裝必要的依賴組件

接下來你須要在集羣中的全部機器上安裝必要的依賴組件,包括:安全

  1. Java 6(推薦使用 JDK 7 以上版本 —— 譯者注)
  2. Python 2.6.6(推薦使用 Python 2.7.x 版本 —— 譯者注)

以上均爲在 Storm 上測試經過的版本。Storm 並不保證對其餘版本的 Java 或 Python 的支持。網絡

下載 Storm 安裝程序並解壓

接下來就要下載須要的 Storm 發行版,並將 zip 安裝文件解壓縮到集羣中的各個機器上。Storm 的發行版能夠在這裏下載(推薦在 Storm 官方網站的下載頁面使用 Apache 的鏡像服務下載 —— 譯者注)。測試

配置 storm.yaml

Storm 的安裝包中包含一個在 conf 目錄下的 storm.yaml 文件,該文件是用於配置 Storm 集羣的各類屬性的。你能夠在這裏查看各個配置項的默認值。storm.yaml 會覆蓋 defaults.yaml 中各個配置項的默認值。如下是幾個在安裝集羣時必須配置的選項:網站

1) storm.zookeeper.servers:這是 Storm 關聯的 ZooKeeper 集羣的地址列表,此項的配置是以下所示:ui

storm.zookeeper.servers:
  - "111.222.333.444"
  - "555.666.777.888"

注意,若是你使用的 ZooKeeper 集羣的端口不是默認端口,你還須要相應地配置 storm.zookeeper.port

2) storm.local.dir:Nimbus 和 Supervisor 後臺進程都須要一個用於存放一些狀態數據(好比 jar 包、配置文件等等)的目錄。你能夠在每一個機器上建立好這個目錄,賦予相應的讀寫權限,並將該目錄寫入配置文件中,以下所示:

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

3) nimbus.host:集羣的工做節點須要知道集羣中的哪臺機器是主機,以便從主機上下載拓撲以及配置文件,以下所示:

nimbus.host: "111.222.333.44"

4) supervisor.slots.ports:你須要經過此配置項配置每一個 Supervisor 機器可以運行的工做進程(worker)數。每一個 worker 都須要一個單獨的端口來接收消息,這個配置項就定義了 worker 能夠使用的端口列表。若是你在這裏定義了 5 個端口,那麼 Storm 就會在該機器上分配最多 5 個worker。若是定義 3 個端口,那 Storm 至多隻會運行三個 worker。此項的默認值是 6700、670一、670二、6703 四個端口,以下所示:

supervisor.slots.ports:
    - 6700
    - 6701
    - 6702
    - 6703

配置外部庫與環境變量(可選)

若是你須要使用某些外部庫或者定製插件的功能,你能夠將相關 jar 包放入 extlib/ 與 extlib-daemon 目錄下。注意,extlib-daemon 目錄僅僅用於存儲後臺進程(Nimbus,Supervisor,DRPC,UI,Logviewer)所需的 jar 包,例如,HDFS 以及定製的調度庫。另外,能夠使用STORM_EXT_CLASSPATH 和 STORM_EXT_CLASSPATH_DAEMON 兩個環境變量來配置普通外部庫與「僅用於後臺進程」外部庫的 classpath。

使用 「storm」 腳本啓動後臺進程

最後一步是啓動全部的 Storm 後臺進程。注意,這些進程必須在嚴格監控下運行。由於 Storm 是個與 ZooKeeper 類似的快速失敗系統,其進程很容易被各類異常錯誤終止。之因此設計成這種模式,是爲了確保 Storm 進程能夠在任什麼時候刻安全地中止而且在進程從新啓動以後恢復征程。這也是 Storm 不在處理過程當中保存任何狀態的緣由 —— 在這種狀況下,若是有 Nimbus 或者 Supervisor 從新啓動,運行中的拓撲不會受到任何影響。下面是啓動後臺進程的方法:

  1. Nimbus:在 master 機器上,在監控下執行 bin/storm nimbus 命令。
  2. Supervisor:在每一個工做節點上,在監控下執行 bin/storm supervisor 命令。Supervisor 的後臺進程主要負責啓動/中止該機器上的 worker 進程。
  3. UI:在 master 機器上,在監控下執行 bin/storm ui 命令啓動 Storm UI(Storm UI 是一個能夠在瀏覽器中方便地監控集羣與拓撲運行情況的站點)後臺進程。能夠經過 http://{nimbus.host}:8080 來訪問 UI 站點。

能夠看出,啓動後臺進程很是簡單。同時,各個後臺進程也會將日誌信息記錄到 Storm 安裝程序的 logs/ 目錄中。

相關文章
相關標籤/搜索