Apache Storm工作流程
一個工作的Storm集群應(yīng)該有一個Nimbus和一個或多個supervisors。另一個重要的節(jié)點是Apache ZooKeeper,它將用于nimbus和supervisors之間的協(xié)調(diào)。
現(xiàn)在讓我們仔細(xì)看看Apache Storm的工作流程 ?
最初,nimbus將等待“Storm拓?fù)洹碧峤唤o它。
一旦提交拓?fù)洌鼘⑻幚硗負(fù)洳⑹占獔?zhí)行的所有任務(wù)和任務(wù)將被執(zhí)行的順序。
然后,nimbus將任務(wù)均勻分配給所有可用的supervisors。
在特定的時間間隔,所有supervisor將向心跳發(fā)送心跳以通知它們?nèi)匀贿\行著。
當(dāng)supervisor終止并且不向心跳發(fā)送心跳時,則nimbus將任務(wù)分配給另一個supervisor。
當(dāng)nimbus本身終止時,supervisor將在沒有任何問題的情況下對已經(jīng)分配的任務(wù)進(jìn)行工作。
一旦所有的任務(wù)都完成后,supervisor將等待新的任務(wù)進(jìn)去。
同時,終止nimbus將由服務(wù)監(jiān)控工具自動重新啟動。
重新啟動的網(wǎng)絡(luò)將從停止的地方繼續(xù)。同樣,終止supervisor也可以自動重新啟動。由于網(wǎng)絡(luò)管理程序和supervisor都可以自動重新啟動,并且兩者將像以前一樣繼續(xù),因此Storm保證至少處理所有任務(wù)一次。
一旦處理了所有拓?fù)洌瑒t網(wǎng)絡(luò)管理器等待新的拓?fù)涞竭_(dá),并且類似地,管理器等待新的任務(wù)。
默認(rèn)情況下,Storm集群中有兩種模式:
本地模式 -此模式用于開發(fā),測試和調(diào)試,因為它是查看所有拓?fù)浣M件協(xié)同工作的最簡單方法。在這種模式下,我們可以調(diào)整參數(shù),使我們能夠看到我們的拓?fù)淙绾卧诓煌腟torm配置環(huán)境中運行。在本地模式下,storm拓?fù)湓诒镜貦C器上在單個JVM中運行。
生產(chǎn)模式 -在這種模式下,我們將拓?fù)涮峤坏焦ぷ鱏torm集群,該集群由許多進(jìn)程組成,通常運行在不同的機器上。如在storm的工作流中所討論的,工作集群將無限地運行,直到它被關(guān)閉。