我目前与Windows机器上的Netbeans一起开发拓扑结构。当我部署在本地模式:
LocalCluster cluster = new LocalCluster(); cluster.submitTopology("word-count", conf, builder.createTopology());
一切工作得很好,但是当我尝试:
StormSubmitter.submitTopology("word", conf, builder.createTopology());
它显然试图部署在集群模式下的拓扑结构和失败,因为我没有上运行的风暴灵气我本地计算机。我确实在一个数字海洋液滴上部署了风暴,但是我目前(并不方便)的解决方案是复制JAR文件并使用storm jar...
命令进行部署。
我的问题是:有没有办法告诉Netbeans我的nimbus IP地址是什么,所以它可以远程部署它? (并节省我的时间)
预先感谢您!如何开发(本地)并部署Storm拓扑(远程)?
回答
Check this link
现在我可以在Netbeans中开发拓扑,在本地测试它们,并最终将它们部署到集群上的Nimbus。这个解决方案对我很好!
加入的conf文件:
conf.put(Config.NIMBUS_HOST, "123.456.789.101); //YOUR NIMBUS'S IP conf.put(Config.NIMBUS_THRIFT_PORT,6627); //int is expected here
此外,添加以下内容: System.setProperty("storm.jar", <path-to-jar>); //link to exact file location (w/ dependencies)
避免以下错误:[main] INFO backtype.storm.StormSubmitter - Jar not uploaded to master yet. Submitting jar... Exception in thread "main" java.lang.RuntimeException: Must submit topologies using the 'storm' client script so that StormSubmitter knows which jar to upload.
干杯!
您可以通过使用conf
地图参数的信息..你可以通过一键,值对按您的要求
为接受的参数列表来检查this网页..
是的,你肯定可以告诉你的拓扑你的nimbus IP。以下是在远程集群上提交拓扑的示例代码。
Map storm_conf = Utils.readStormConfig();
storm_conf.put("nimbus.host", "<Nimbus Machine IP>");
Client client = NimbusClient.getConfiguredClient(storm_conf)
.getClient();
String inputJar = "C:\\workspace\\TestStormRunner\\target\\TestStormRunner-0.0.1-SNAPSHOT-jar-with-dependencies.jar";
NimbusClient nimbus = new NimbusClient(storm_conf, "<Nimbus Machine IP>",
<Nimbus Machine Port>);
// upload topology jar to Cluster using StormSubmitter
String uploadedJarLocation = StormSubmitter.submitJar(storm_conf,
inputJar);
String jsonConf = JSONValue.toJSONString(storm_conf);
nimbus.getClient().submitTopology("testtopology",
<uploadedJarLocation>, jsonConf, builder.createTopology());
因此,在这种情况下,应该在TestStormRunner-0.0.1-SNAPSHOT-jar-with-dependencies.jar中定义没有拓扑类的喷口和螺栓?因为我们确实在给定的代码片段 – Humoyun 2015-11-12 02:32:50
中有topologyBuilder不,我们还需要在TestStormRunner中添加拓扑类,因为从StormSubmitter我们不设置Spout和螺栓。那是在目标拓扑 – 2015-11-12 03:44:10
啊现在我知道我的问题的原因,我在RemoteSubmitter类(它负责发送jar)和topology.jar中都定义了StormSubmitter.submitTopology(...)。据我所知,我应该在RemoteSubmitter和topology.jar中定义setBolt和setSpout,在RemoteSubmitter中定义StormSubmitter.submitTopology(...),而不是在topology.jar中,对吧? – Humoyun 2015-11-12 11:20:49
- 1. 通过REST API部署Storm拓扑
- 2. Apache Storm远程拓扑提交
- 3. Storm拓扑未开始处理
- 4. 如何开始构建Storm的拓扑结构?
- 5. 在本地运行Storm拓扑时出错
- 6. 带Akka Actors的Storm拓扑生成器
- 7. 风暴拓扑部署使用maven
- 8. 杀死拓扑名称中包含特殊字符的Storm拓扑结构
- 9. 运行拓扑时在Storm中发生NullPointerException
- 10. netbeans - 如何在Netbeans中关闭Apache Storm的拓扑结构?
- 11. Apache Storm错误无法提交本地群集上的拓扑结构
- 12. 如何检查Storm拓扑结构是否已加载并运行在Java中
- 13. 资源拓扑地图
- 14. 由于在部署到远程集群时发现多个defaults.yaml资源,拓扑无法正常工作
- 15. 我应该使用哪种方法来实现此Storm拓扑?
- 16. 拓扑排序
- 17. 与拓扑
- 18. 机架拓扑
- 19. 拓扑,缩放
- 20. 部署与Spark依赖关系的风暴拓扑
- 21. 拓扑部署中出现Knox网关错误
- 22. IBM MobileFirst Server的各种部署拓扑结构是什么?
- 23. 拓扑排序Neo4j
- 24. Cassandra拓扑问题
- 25. 如何为本地开发部署一个java applet
- 26. 如何部署ColdFusion本地开发环境?
- 27. 如何调用DAG拓扑重构?
- 28. 风暴拓扑如何处理元组?
- 29. 开发过程,部署,GitHub
- 30. 如何动态地在Java中绘制(星形)拓扑?
我花了几个小时,试图找到一个解决方案。我知道我可以在本地运行风暴客户端并使用storm.yaml来配置我的nimbus IP或者使用风暴罐'-c .....'在submitTopology时我们通过的配置中有没有提到nimbus的方法? – 2014-09-04 21:02:51