Apache Storm叢集架構
Apache Storm的主要亮點是,它是一個容錯,快速,沒有「單點故障」(SPOF)分散式應用程式。我們可以根據需要在多個系統中安裝Apache Storm,以增加應用程式的容量。
讓我們看看Apache Storm叢集如何設計和其內部架構。下圖描述了集群設計。
Apache Storm有兩種類型的節點,Nimbus(主節點)和Supervisor(工作節點)。 Nimbus是Apache Storm的核心元件。 Nimbus的主要工作是運行Storm拓撲。 Nimbus分析拓撲並收集要執行的任務。然後,它將任務分配給可用的supervisor。
Supervisor將有一個或多個工作進程。 Supervisor將任務委派給工作流程。工作進程將根據需要產生盡可能多的執行器並運行任務。 Apache Storm使用內部分散式訊息傳遞系統來進行Nimbus和管理程式之間的通訊。
元件 | 描述 |
---|---|
#Nimbus(主節點) | Nimbus是Storm集群的主節點。叢集中的所有其他節點稱為工作節點。主節點負責在所有工作節點之間分發數據,向工作節點分配任務和監控故障。 |
Supervisor(工作節點) | 遵循指令的節點稱為Supervisors。 Supervisor有多個工作流程,它管理工作進程以完成由nimbus指派的任務。 |
Worker process(工作進程) | 工作進程將執行與特定拓撲相關的任務。工作進程不會自己運行任務,而是建立執行器並要求他們執行特定的任務。工作進程將有多個執行器。 |
Executor(執行者) | 執行器只是由工作進程產生的單一執行緒。執行器執行一個或多個任務,但僅用於特定的spout或bolt。 |
Task(任務) | 任務執行實際的資料處理。所以,它是一個spout或bolt。 |
ZooKeeper framework(ZooKeeper框架) | Apache的ZooKeeper的是使用群集(節點組)自己和維護具有強大的同步技術共享資料之間進行協調的服務。 Nimbus是無狀態的,所以它依賴ZooKeeper來監視工作節點的狀態。 ZooKeeper的幫助supervisor與nimbus互動。它負責維持nimbus,supervisor的狀態。 |
Storm是無狀態的。即使無狀態性質有它自己的缺點,它實際上幫助Storm以最好的可能和最快的方式處理即時數據。
Storm雖然不是完全無狀態的。它將其狀態儲存在Apache ZooKeeper中。由於狀態在Apache ZooKeeper中可用,故障的網路可以重新啟動,並從它離開的地方工作。通常,像monit這樣的服務監視工具將監視Nimbus,並在出現任何故障時重新啟動它。
Apache Storm還有一個稱為Trident拓撲的高階拓撲,它具有狀態維護,並且還提供了一個高階API,例如Pig。我們將在接下來的章節中討論所有這些功能。