Apache Storm 官方文檔 —— Storm 集群安裝配置

杜老師說 2022-01-07 07:53:24 阅读数:376

apache storm 官方 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_CLASSPATHSTORM_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 文件中修改 —— 譯者注)。

原創文章,轉載請注明: 轉載自並發編程網 – ifeve.com本文鏈接地址: Apache Storm 官方文檔 —— Storm 集群安裝配置

FavoriteLoading添加本文到我的收藏
版权声明:本文为[杜老師說]所创,转载请带上原文链接,感谢。 https://gsmany.com/2022/01/202201070753244003.html