Storm 集群安裝配置

jopen 9年前發布 | 31K 次閱讀 Storm 分布式/云計算/大數據
 

原文鏈接 譯者: 魏勇

本文詳細介紹了 Storm 集群的安裝配置方法。如果需要在 AWS 上安裝 Storm,你應該先了解一下 storm-deploy 項目。 storm-deploy 可以自動完成 E2 上 Storm 集群的準備、配置、安裝的全部過程,同時還設置好了 Ganglia,方便監控 CPU、磁盤以及網絡的使用信息。

如果你在使用 Storm 集群時遇到問題,請先查看“問題與解決”一文中是否已有相應的解決方案。如果檢索不到有效的解決方法,請向社區的郵件列表發送關于問題的郵件。

以下是安裝 Storm 的步驟:

  1. 安裝 ZooKeeper 集群;
  2. 在各個機器上安裝運行集群所需要的依賴組件;
  3. 下載 Storm 安裝程序并解壓縮到集群的各個機器上;
  4. 在 storm.yaml 中添加集群配置信息;
  5. 使用 “storm” 腳本啟動各機器后臺進程。

安裝 ZooKeeper 集群

Storm 使用 ZooKeeper 來保證集群的一致性。集群中 ZooKeeper 并不是用來進行消息傳遞的,所以 Storm 對 ZooKeeper 的負載相當低。雖然在大部分場景下單點 ZooKeeper 也勉強夠用,但是如果你需要更可靠的 HA 機制或者需要部署大規模 Storm 集群,你最好配置一個 ZooKeeper 集群。ZooKeeper 集群的部署說明請參考 此文

關于 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 集群的地址列表,此項的配置是如下所示:

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、6701、6702、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/ 目錄中(這是 Storm 的默認設置,日志文件的路徑與相關配置信息可以在 {STORM_HOME}/logback/cluster.xml 文件中修改 —— 譯者注)。

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!