您的位置:首页 > Web前端 > JavaScript

JStorm-2.1.1源码分析--Topology提交(中)

2016-06-10 11:51 411 查看
        TopologyBuilder会保存各个组件到相应的数据结构中,数据结构如下:



        
        组件配置信息存放方法如下:



        TopologyBuilder构造好Topology之后,通过Jstorm Client的StormSubmitter.submitTopology(streamName, conf,builder.createTopology())提交Topology到Jstorm集群,在StormSubmitter.submitTopology方法中,共分两步:1、上传jar文件
2、提交作业。首先会对配置项进行检查、然后将Topology自己的配置项和Jstorm的配置项组装成一个大的Map,之后上传用户在命令行提交的Jar包,然后通过NimbusClient 的submitTopologyWithOpts(String name, String uploadedJarLocation, String jsonConf, StormTopology topology, SubmitOptions options) 方法将Topology提交到Jstorm集群,其核心代码如下:



        在submitTopology方法中,Jstorm要求每个topology名称必须唯一, 通过submitJar(conf)上传Jar包到ZK,再使用语句client.getClient().submitTopologyWithOpts(name, path,  serConf, topology, opts)通过Thrift将topology提交到集群。
       NimbusClient提交之后,NimbusSever通过com.alibaba.jstorm.daemon.nimbus.ServiceHandler.submitTopologyWithOpts(String topologyname, String uploadedJarLocation, String jsonConf,
StormTopology topology, SubmitOptions options)处理接收到的topology,其具体逻辑如下:





          运行一个topology,在zk上的目录如下:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: