转载:html
http://weyo.me/pages/techs/storm-topology-remote-submission/java
http://www.javaworld.com/article/2078672/big-data/open-source-tools-open-source-java-projects-storm.html?page=2apache
做为一个懒癌晚期患者,虽然 Storm 只须要一条命令的任务提交方式已经够简单了,但仍是一直想要有种更简(tou)单(lan)的方式,好比要是在 Windows 下写完代码以后能够直接提交任务而不须要手动把 jar 包拷到服务器上再提交那定是极好的了。谷歌了一下终于在墙外找到了解决方法: Submitting a topology to Remote Storm Clusterjson
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
Config conf = new Config(); conf.setNumWorkers(2); conf.setDebug(true); // ... // topology 其余配置信息等 // 读取本地 Storm 配置文件 Map stormConf = Utils.readStormConfig(); stormConf.put("nimbus.host", "hd124"); stormConf.putAll(conf); Nimbus.Client client = NimbusClient.getConfiguredClient(stormConf).getClient(); String inputJar = "E:\\workspace\\storm-demo\\target\\storm-demo-0.0.5-SNAPSHOT-shade.jar"; NimbusClient nimbus = new NimbusClient(stormConf, "hd124", 6627); // 使用 StormSubmitter 提交 jar 包 String uploadedJarLocation = StormSubmitter.submitJar(stormConf, inputJar); String jsonConf = JSONValue.toJSONString(stormConf); nimbus.getClient().submitTopology("remotetopology", uploadedJarLocation, jsonConf, builder.createTopology());
|
第8行会读取 Storm 的本地配置文件,若是不指定的话,Utils.readStormConfig()
会读取 Storm 依赖 jar 包的默认配置文件,如 "\maven\repository\org\apache\storm\storm-core\0.9.3\storm-core-0.9.3.jar\defaults.yaml"
,若是集群配置与默认配置有较大不一样,还须要修改对应配置信息。服务器
这段代码须要在 Topology 已经完成打包以后运行,由于须要在程序中指定待提交的 jar 包。能够在 IDE 中安装 Maven 插件,Topology 开发完成以后直接打包,而后再切换到这段提交代码中执行提交任务。app
任务提交完成以后能够在 Storm UI 中查看提交结果。maven
再来一个:ide
http://xumingming.sinaapp.com/117/twitter-storm%E7%9A%84%E4%B8%80%E4%BA%9B%E5%85%B3%E9%94%AE%E6%A6%82%E5%BF%B5/ui
http://xumingming.sinaapp.com/189/twitter-storm-storm%E7%9A%84%E4%B8%80%E4%BA%9B%E5%B8%B8%E8%A7%81%E6%A8%A1%E5%BC%8F/spa