Storm 集羣配置(二)

  nimbus

   守護進程的主要職責是管理,協調和監控在集羣上運行的topology. 包括topology的發佈,任務指派,事件處理失敗時重新指派任務。

  將topology發佈到Storm集羣,將預先打包成jar文件的topology和配置信息提交到nimbus服務器上。一旦nimbus接收到topology的壓縮包,會將jar包分發到足夠數量的supervisor節點上。當supervisor節點接收到了topology的壓縮文件,nimbus就會指派task(bolt和spout實例)到每個supervisor並且發送信息指示supervisor生成足夠的worker來執行指派的task。

  nimbus記錄所有supervisor節點的狀態和分配給它們的task。如果nimbus發現某個supervisor沒有上報心跳或者已經不可達了,它會將故障supervisor分配的task重新分配到集羣中的其他supervisor節點。

  前面提到過,嚴格意義上講nimbus不會引起單點故障。這個特性是因爲nimbus並不參與topology的數據處理過程,它僅僅是管理topology的初始化,任務分發和進行監控。實際上,如果nimbus守護進程topology運行時停止了,只要分配的supervisor和worker健康運行,topology一直繼續數據處理。要注意的是,在nimbus已經停止的情況下supervisor異常終止,因爲沒有nimbus守護進程來重新指派失敗這個終止的supervisor的任務,數據處理就會失敗。


  supervisor守護進程的工作方式

  supervisor守護進程等待nimbus分配任務後生成並監控workers(JVM進程)執行任務。supervisor和worker都是運行在不同的JVM進程上,如果由supervisor拉起的一個worker進程因爲錯誤(或者因爲Unix終端的kill-9命令,Window的tskkill命令強制結束)異常退出,supervisor守護進程會嘗試重新生成新的worker進程。

  如果一個worker甚至整個supervisor節點都故障了,Storm怎麼保障出錯時正在處理的tuples的傳輸?

  答案就是Storm的tuple的應答確認機制中。當打開了可靠傳輸的選項,傳輸到故障節點上的tuples將不會收到應答確認,spout會因爲超時而重新發射原始tuple。這樣的過程會一直重複直到topology從故障中恢復開始正常處理數據。(數據會發送到worker的本地隊列中,一旦worker恢復,就會開始處理這些數據了)。



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