Apache Storm叢集架構


Apache Storm的主要亮點是,它是一個容錯,快速,沒有「單點故障」(SPOF)分散式應用程式。我們可以根據需要在多個系統中安裝Apache Storm,以增加應用程式的容量。

讓我們看看Apache Storm叢集如何設計和其內部架構。下圖描述了集群設計。

core_concept.jpg

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