storm分配topology关键代码

来源:互联网 发布:安居客移动网络经纪人 编辑:程序博客网 时间:2024/05/08 22:51

原文: 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
原创粉丝点击