
- Apache Storm 教程
- Apache Storm - 首頁
- Apache Storm - 簡介
- Apache Storm - 核心概念
- Apache Storm - 叢集架構
- Apache Storm - 工作流程
- Storm - 分散式訊息系統
- Apache Storm - 安裝
- Apache Storm - 實踐案例
- Apache Storm - Trident
- Twitter 中的 Apache Storm
- 雅虎財經中的 Apache Storm
- Apache Storm - 應用
- Apache Storm 有用資源
- Apache Storm - 快速指南
- Apache Storm - 有用資源
- Apache Storm - 討論
Apache Storm - 叢集架構
Apache Storm 的主要亮點之一是它是一個容錯的、快速的、沒有“單點故障”(SPOF)的分散式應用程式。我們可以根據需要在儘可能多的系統中安裝 Apache Storm 以提高應用程式的容量。
讓我們看看 Apache Storm 叢集的設計及其內部架構。下圖描述了叢集設計。

Apache Storm 有兩種型別的節點,**Nimbus**(主節點)和**Supervisor**(工作節點)。Nimbus 是 Apache Storm 的核心元件。Nimbus 的主要工作是執行 Storm topology。Nimbus 分析 topology 並收集要執行的任務。然後,它將任務分配給可用的 Supervisor。
一個 Supervisor 將擁有一個或多個工作程序。Supervisor 將任務委託給工作程序。工作程序將根據需要生成多個執行器並執行任務。Apache Storm 使用內部分散式訊息系統進行 Nimbus 和 Supervisor 之間的通訊。
元件 | 描述 |
---|---|
Nimbus | Nimbus 是 Storm 叢集的主節點。叢集中的所有其他節點都稱為**工作節點**。主節點負責在所有工作節點之間分配資料,將任務分配給工作節點並監控故障。 |
Supervisor | 遵循 Nimbus 指令的節點稱為 Supervisor。**Supervisor** 擁有多個工作程序,它管理工作程序以完成 Nimbus 分配的任務。 |
工作程序 | 工作程序將執行與特定 topology 相關的任務。工作程序本身不會執行任務,而是建立**執行器**並要求它們執行特定任務。一個工作程序將擁有多個執行器。 |
執行器 | 執行器只不過是工作程序生成的單個執行緒。執行器執行一個或多個任務,但僅限於特定的 spout 或 bolt。 |
任務 | 任務執行實際的資料處理。因此,它要麼是 spout,要麼是 bolt。 |
ZooKeeper 框架 | Apache ZooKeeper 是一種由叢集(節點組)使用的服務,用於協調它們之間並使用強大的同步技術維護共享資料。Nimbus 是無狀態的,因此它依賴於 ZooKeeper 來監控工作節點狀態。 ZooKeeper 幫助 Supervisor 與 Nimbus 互動。它負責維護 Nimbus 和 Supervisor 的狀態。 |
Storm 本質上是無狀態的。儘管無狀態有其自身的缺點,但它實際上幫助 Storm 以最佳和最快的方式處理即時資料。
不過,Storm 並非完全無狀態。它將其狀態儲存在 Apache ZooKeeper 中。由於狀態存在於 Apache ZooKeeper 中,因此可以重新啟動失敗的 Nimbus,並使其從中斷的地方繼續工作。通常,服務監控工具(如**monit**)將監控 Nimbus,並在發生任何故障時重新啟動它。
Apache Storm 還具有一個名為**Trident Topology**的高階 topology,它具有狀態維護功能,並且還提供類似於 Pig 的高階 API。我們將在接下來的章節中討論所有這些功能。