本文詳細介紹了 Storm 集羣的安裝配置方法。若是須要在 AWS 上安裝 Storm,你應該看一下 storm-deploy 項目。storm-deploy 能夠自動完成 E2 上 Storm 集羣的準備、配置、安裝的所有過程,同時還設置好了 Ganglia,方便監控 CPU、磁盤以及網絡的使用信息。html
若是你在使用 Storm 集羣時遇到問題,請先查看「問題與解決」一文中是否已有相應的解決方案。若是檢索不到有效的解決方法,請向社區的郵件列表發送關於問題的郵件。git
如下是安裝 Storm 的步驟:github
Storm 使用 ZooKeeper 來保證集羣的一致性。集羣中 ZooKeeper 並非用來進行消息傳遞的,因此 Storm 對 ZooKeeper 的負載至關低。雖然在大部分場景下單點 ZooKeeper 也勉強夠用,可是若是你須要更可靠的 HA 機制或者須要部署大規模 Storm 集羣,你最好配置一個 ZooKeeper 集羣。ZooKeeper 集羣的部署說明請參考此文。apache
關於 ZooKeeper 部署的幾點說明:瀏覽器
接下來你須要在集羣中的全部機器上安裝必要的依賴組件,包括:安全
以上均爲在 Storm 上測試經過的版本。Storm 並不保證對其餘版本的 Java 或 Python 的支持。網絡
接下來就要下載須要的 Storm 發行版,並將 zip 安裝文件解壓縮到集羣中的各個機器上。Storm 的發行版能夠在這裏下載(推薦在 Storm 官方網站的下載頁面使用 Apache 的鏡像服務下載 —— 譯者注)。測試
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 是個與 ZooKeeper 類似的快速失敗系統,其進程很容易被各類異常錯誤終止。之因此設計成這種模式,是爲了確保 Storm 進程能夠在任什麼時候刻安全地中止而且在進程從新啓動以後恢復征程。這也是 Storm 不在處理過程當中保存任何狀態的緣由 —— 在這種狀況下,若是有 Nimbus 或者 Supervisor 從新啓動,運行中的拓撲不會受到任何影響。下面是啓動後臺進程的方法:
bin/storm nimbus
命令。bin/storm supervisor
命令。Supervisor 的後臺進程主要負責啓動/中止該機器上的 worker 進程。bin/storm ui
命令啓動 Storm UI(Storm UI 是一個能夠在瀏覽器中方便地監控集羣與拓撲運行情況的站點)後臺進程。能夠經過 http://{nimbus.host}:8080
來訪問 UI 站點。能夠看出,啓動後臺進程很是簡單。同時,各個後臺進程也會將日誌信息記錄到 Storm 安裝程序的 logs/ 目錄中。