Apache Storm集群架構(gòu)

2018-01-04 17:19 更新

Apache Storm的主要亮點是,它是一個容錯,快速,沒有“單點故障”(SPOF)分布式應(yīng)用程序。我們可以根據(jù)需要在多個系統(tǒng)中安裝Apache Storm,以增加應(yīng)用程序的容量。

讓我們看看Apache Storm集群如何設(shè)計和其內(nèi)部架構(gòu)。下圖描述了集群設(shè)計。

動物園管理員框架

Apache Storm有兩種類型的節(jié)點,Nimbus(主節(jié)點)和Supervisor(工作節(jié)點)。Nimbus是Apache Storm的核心組件。Nimbus的主要工作是運行Storm拓?fù)洹?span>Nimbus分析拓?fù)洳⑹占獔?zhí)行的任務(wù)。然后,它將任務(wù)分配給可用的supervisor。

Supervisor將有一個或多個工作進程。Supervisor將任務(wù)委派給工作進程。工作進程將根據(jù)需要產(chǎn)生盡可能多的執(zhí)行器并運行任務(wù)。Apache Storm使用內(nèi)部分布式消息傳遞系統(tǒng)來進行Nimbus和管理程序之間的通信。

組件描述
Nimbus(主節(jié)點)Nimbus是Storm集群的主節(jié)點。集群中的所有其他節(jié)點稱為工作節(jié)點。主節(jié)點負(fù)責(zé)在所有工作節(jié)點之間分發(fā)數(shù)據(jù),向工作節(jié)點分配任務(wù)和監(jiān)視故障。
Supervisor(工作節(jié)點)遵循指令的節(jié)點被稱為Supervisors。Supervisor有多個工作進程,它管理工作進程以完成由nimbus分配的任務(wù)。
Worker process(工作進程)工作進程將執(zhí)行與特定拓?fù)湎嚓P(guān)的任務(wù)。工作進程不會自己運行任務(wù),而是創(chuàng)建執(zhí)行器并要求他們執(zhí)行特定的任務(wù)。工作進程將有多個執(zhí)行器。
Executor(執(zhí)行者)執(zhí)行器只是工作進程產(chǎn)生的單個線程。執(zhí)行器運行一個或多個任務(wù),但僅用于特定的spoutbolt。
Task(任務(wù))任務(wù)執(zhí)行實際的數(shù)據(jù)處理。所以,它是一個spoutbolt。
ZooKeeper frameworkZooKeeper框架

Apache的ZooKeeper的是使用群集(節(jié)點組)自己和維護具有強大的同步技術(shù)共享數(shù)據(jù)之間進行協(xié)調(diào)的服務(wù)。Nimbus是無狀態(tài)的,所以它依賴于ZooKeeper來監(jiān)視工作節(jié)點的狀態(tài)。

ZooKeeper的幫助supervisornimbus交互。它負(fù)責(zé)維持nimbus,supervisor的狀態(tài)。

Storm是無狀態(tài)的。即使無狀態(tài)性質(zhì)有它自己的缺點,它實際上幫助Storm以最好的可能和最快的方式處理實時數(shù)據(jù)。

Storm雖然不是完全無狀態(tài)的。它將其狀態(tài)存儲在Apache ZooKeeper中。由于狀態(tài)在Apache ZooKeeper中可用,故障的網(wǎng)絡(luò)可以重新啟動,并從它離開的地方工作。通常,像monit這樣的服務(wù)監(jiān)視工具將監(jiān)視Nimbus,并在出現(xiàn)任何故障時重新啟動它。

Apache Storm還有一個稱為Trident拓?fù)涞母呒壨負(fù)洌哂袪顟B(tài)維護,并且還提供了一個高級API,如Pig。我們將在接下來的章節(jié)中討論所有這些功能。

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號