storm分配topology關鍵代碼

原文: http://blog.csdn.net/larrylgq/article/details/7268218

numbus

read-storm-config;讀取storm配置
launch-server!-->
validate-distributed-mode!驗證是否是集羣模式
check-storm-active!檢查storm狀態是否存活
(swap! (:submitted-count nimbus) inc)通過swap!方式將nimbus的提交數加一 
storm-name+submitted-count+時間戳拼成stormid
system-topology!確保不會與系統topoligy重名(不能使用_開頭的id)
setup-heartbeats!在zookeeper上建立心跳目錄
mk-assignments根據spout和bolt以及代碼中配置的parallelism hint參數來分配工作量,以task爲單位
start-storm將工作分配給supervisor,通過在activate-storm!把topology信息寫入/storm/topologu-id下面

supervisor
read-storm-config;讀取storm配置
validate-distributed-mode!驗證是否是集羣模式
launch-worker如有必要啓動新的worker並分配task給worker
download-storm-code下載topology的代碼

worker
supervisor執行launch-worker時啓動參數:storm-id。supervisor-id,port-str,worker-id
task-ids (read-worker-task-ids storm-cluster-state storm-id supervisor-id port)讀取nimbus分配的task在zookeeper上
 task->component (storm-task-info storm-cluster-state storm-id)找到task對應的spout或bolt
outbound-tasks (worker-outbound-tasks task->component mk-topology-context task-ids)找到tasks對應的輸出task
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章