如果你通過Eclipse提交你應該爲以下內容:
public static void main(String[] args) {
TopologyBuilder b = new TopologyBuilder();
// build your topology
b.setSpout(...);
b.setBolt(...);
Config c = new Config();
c.put(Config.NIMBUS_HOST, "130.211.244.139");
// not sure you you use 6627; 6123 is default port; if you change the port, just use 6627 of course
c.put(Config.NIMBUS_THRIFT_PORT, new Integer(6123));
StormSubmitter.submitTopology("myTopolgyName", conf, b.createTopology());
}
此外,你需要指定JVM參數-Dstorm.jar=/Users/agarg/Documents/notificationRepo/apache-storm/build/libs/apache-storm-SNAPSHOT-ns.r134-boot.jar
如果你想避免包括傳遞。依賴關係你也可以將它們手動複製到Storm的lib
文件夾中。當然,你需要把它們複製到所有的機器上。您還可能需要重新啓動羣集。你可以複製儘可能多的罐子到lib
文件夾 - Storm將「拾取」所有這些文件夾。
此外,如果生成一個脂肪罐子,從屬罐子不能嵌套到遙遠的罐(即,取決於罐的所提取的內容必須被包括在遠罐)。例如,您的依賴jar dep.jar
包含文件DClass.class
;因此,你的fat jar不能包含「dep.jar」(既不在頂層也不在「lib」文件夾中),但所有Spout和Bolt類旁邊必須包含「DClass.class」(即「DClass.class」罐子內的頂層文件夾。當然,你還需要尊重的封裝結構,也就是說,如果「dep.jar」包含文件dpackage.DClass2
(文件夾「dpackage」,即「DClass2.class」)遠的jar必須包含包含「DClass2.class」目錄「dpackage」(在罐子內的頂級文件夾)。
你通過'風暴jar'命令提交'彈簧數據的JPA-1.6.4.RELEASE.jar'?作爲一個除了構建一個fat jar之外,還可以手動將依賴項jar複製到'STORM_HOME/lib'中(當然在你的每臺機器上)。你可能需要重新啓動集羣才能讓Storm拿起罐子。 –
我沒有提交使用風暴jar命令...我從我的Eclipse提交使用Nimbus Client:=> Map storm_conf = Utils.readStormConfig(); storm_conf.put(Config.NIMBUS_HOST,「130.211.244.139」); 字符串罐子= 「/Users/agarg/Documents/notificationRepo/apache-storm/build/libs/apache-storm-SNAPSHOT-ns.r134-boot.jar」; NimbusClient nimbus = new NimbusClient(storm_conf,「130.211.244.139」,6627); String uploadedJarLocation = StormSubmitter.submitJar(storm_conf,jar); –
另外,我只有一個單節點集羣儀式現在... –