ich das dieses Problem auf @abhi und @Nishu Tayal die Antworten basierend gelöst haben, würde Ich mag meine posten Code hier:
public static void submitLocalTopologyWay1(String topologyName, Config topologyConf,
StormTopology topology, String localJar) {
try {
//get default storm config
Map defaultStormConf = Utils.readStormConfig();
defaultStormConf.putAll(topologyConf);
//set JAR
System.setProperty("storm.jar",localJar);
//submit topology
StormSubmitter.submitTopology(topologyName, defaultStormConf, topology);
} catch (Exception e) {
String errorMsg = "can't deploy topology " + topologyName + ", " + e.getMessage();
System.out.println(errorMsg);
e.printStackTrace();
}
}
public static void submitLocalTopologyWay2(String topologyName, Config topologyConf,
StormTopology topology, String localJar) {
try {
//get nimbus client
Map defaultStormConf = Utils.readStormConfig();
defaultStormConf.putAll(topologyConf);
Client client = NimbusClient.getConfiguredClient(defaultStormConf).getClient();
//upload JAR
String remoteJar = StormSubmitter.submitJar(defaultStormConf, localJar);
//submit topology
client.submitTopology(topologyName, remoteJar, JSONValue.toJSONString(topologyConf), topology);
} catch (Exception e) {
String errorMsg = "can't deploy topology " + topologyName + ", " + e.getMessage();
System.out.println(errorMsg);
e.printStackTrace();
}
}
dann hier ist ein Test, und Sie müssen Ihren Code zu einer JAR-Datei zuerst erstellen.
public void testSubmitTopologySubmitLocalTopologyWay1() {
Config config = new Config();
config.put(Config.NIMBUS_HOST,"9.119.84.179");
config.put(Config.NIMBUS_THRIFT_PORT, 6627);
config.put(Config.STORM_ZOOKEEPER_SERVERS, Arrays.asList("9.119.84.177","9.119.84.178","9.119.84.176"));
config.put(Config.STORM_ZOOKEEPER_PORT,2181);
config.put(Config.TOPOLOGY_WORKERS, 3);
RemoteSubmitter.submitLocalTopologyWay1("word-count-test-1", config,
WordCountTopology.buildTopology(), // your topology
"C:\\MyWorkspace\\project\\storm-sample-0.0.1-SNAPSHOT-jar-with-dependencies.jar");//the JAR file
}
Wie haben Sie die folgende Fehlermeldung 'java.lang.RuntimeException zu überwinden: Gefunden mehrere defaults.yaml Ressourcen. Vermutlich bündelst du die Storm-Gläser mit deinem Topologie-Krug. – manthosh
"Mehrere defaults.yaml-Ressourcen gefunden. Wahrscheinlich werden Sie die Storm-Jars mit Ihrer Topologie-JAR-Datei bündeln." Fügen Sie die Storm-Jars nicht in Ihre Topologie-Jar ein, und wenn Sie maven verwenden, fügen Sie diese Zeile in Ihrer Sturmabhängigkeit hinzu. –
abhi
seine geben 'java.lang.RuntimeException: Topologie mit Namen' mytopology' existiert bereits auf Cluster' –