Apache Storm工作流程


一個工作的Storm叢集應該有一個Nimbus和一個或多個supervisors。另一個重要的節點是Apache ZooKeeper,它將用於nimbus和supervisors之間的協調。

現在讓我們仔細看看Apache Storm的工作流程 −

  • #最初,nimbus將等待「Storm拓撲」提交給它。

  • 一旦提交拓撲,它將處理拓撲並收集要執行的所有任務和任務將被執行的順序。

  • 然後,nimbus將任務均勻分配給所有可用的supervisors。

  • 在特定的時間間隔,所有supervisor將向心跳發送心跳以通知它們仍然運行著。

  • 當supervisor終止並且不向心跳發送心跳時,則nimbus將任務分配給另一個supervisor。

  • 當nimbus本身終止時,supervisor將在沒有任何問題的情況下對已經指派的任務進行工作。

  • 一旦所有的任務都完成後,supervisor將等待新的任務進去。

  • 同時,終止nimbus將由服務監控工具自動重新啟動。

  • 重新啟動的網路將從停止的地方繼續。同樣,終止supervisor也可以自動重新啟動。由於網路管理程式和supervisor都可以自動重新啟動,並且兩者將像以前一樣繼續,因此Storm保證至少處理所有任務一次。

  • 一旦處理了所有拓撲,則網路管理器等待新的拓撲到達,並且類似地,管理器等待新的任務。

預設情況下,Storm叢集中有兩種模式:

  • 本機模式 -此模式用於開發,測試和調試,因為它是查看所有拓撲組件協同工作的最簡單方法。在這種模式下,我們可以調整參數,使我們能夠看到我們的拓撲如何在不同的Storm配置環境中運作。在本地模式下,storm拓撲在本地機器上在單一JVM中運作。

  • 生產模式 -在這種模式下,我們將拓撲提交到工作Storm集群,該集群由許多進程組成,通常運行在不同的機器上。如在storm的工作流程中所討論的,工作叢集將無限地運行,直到它被關閉。