Storm核心組件運行機制

 

 

 



 
1. storm集羣啓動後,nimbus進程、supervisor進程,分別向zookeeper進行註冊

  • nimbus做爲服務方,往zookeeper對應目錄寫job配置信息文件
  • supervisor做爲客戶端,監控zookeeper對應的目錄

 

2. 通過strom client客戶端提交job到nimbus,其中包括:

  • 指定spout、bolt實現類,以及並行數量
  • 各個spout、bolt的依賴關係和分組關係
  • Storm配置信息、運行方式(如:服務器提交或本地提交)
 
3. nimbus收到客戶提交的Job請求信息後,按storm集羣的配置信息,以及當前集羣上空閒的worker信息,進行任務分配,將任務分配給supervisor,並將上述信息進行序列化,存儲到zookeeper集羣上,其中序列化的信息包括:
  • 由哪幾臺supervisor(機器),啓動多少個worker,多少並行線程數
  • superviso和worker對應的ip地址和端口號
  • job程序

 

4. zookeeper監控到nimbus的寫文件操作後,發送事件通知所有supervisor,對應的supervisor收到事件通知後,去zookeeper指定目錄獲取worker和job信息,並啓動相應數量的worker和Exectuor(一般情況下,一個Executor對應一個Task任務,一個Task可以是一個spout對象實例或一個bolt對象實例)

 

 

5. Executor啓動後,通過spout去讀取數據源(數據源可能是:消息中間件、數據庫、文件等數據)

 

 

6. 在上一步的基礎上,spout讀取外部數據源信息,通過調用nextTuple方法,進行任務處理,然後將處理結果發送給Topology程序,Topologyt程序由Storm框架將結果發往Storm的消息隊列,然後Storm框架去消費隊列中的一個消息,然後去調用下一個依賴的bolt,通過反序列化將Topology對象信息傳bolt對象,然後去調用bolt的execute方法進行處理

 

 

7. Exeutor按照spout和bolt的依賴關係,持續處理數據,直接到整個Topology執行結束(在Storm中通過UI界面或Storm命令結束Topology)

 

 

 

 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章