Apache Storm - 叢集架構



Apache Storm 的主要亮點之一是它是一個容錯的、快速的、沒有“單點故障”(SPOF)的分散式應用程式。我們可以根據需要在儘可能多的系統中安裝 Apache Storm 以提高應用程式的容量。

讓我們看看 Apache Storm 叢集的設計及其內部架構。下圖描述了叢集設計。

Zookeeper Framework

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。我們將在接下來的章節中討論所有這些功能。

廣告