Java 使用附加类路径运行Storm时出现问题
如何使用其他类路径运行storm拓扑? 我的输出目录如下:Java 使用附加类路径运行Storm时出现问题,java,apache-storm,Java,Apache Storm,如何使用其他类路径运行storm拓扑? 我的输出目录如下: myapp.jar(清单的类路径包含config&lib目录) 库-(目录) conf-(目录) 针对这个问题有以下解决方案(对我来说不太好-我认为这不是最佳做法): 将这些文件打包到jar中 把那些文件放在暴风库里 参考:没有(干净的)方法(我知道)来扩展storm workers的类路径。除了拓扑jar本身之外,类路径是在JVM启动=>时定义的,存在的任何东西对每个节点上运行的所有拓扑都是可见的(因此是共享的)。此外,由于storm
我通常复制部署节点(而不是拓扑运行的节点)中的任何补充配置文件,以json友好格式序列化它们,并在部署时将它们添加到Storm配置中。这样,只要拓扑在集群的某个节点上启动,我就可以从任何prepare()方法再次读取它们。在这里,这种方法再次确保我的配置在集群的任何节点中都是最新的 好的,我有一个解决方案。我不确定它是否足够好(因为它有点复杂),但无论如何…
(如果您有其他解决方案,欢迎:-)
步骤:
脚本
${STORM\u HOME}/bin/STORM.py
,在运行STORM
命令后被调用,它拾取环境变量STORM\u EXT\u CLASSPATH
并将其添加到类路径
设置该环境变量可以解决您的问题:
export STORM_EXT_CLASSPATH={myoutput_dir}/lib
跟进:这不起作用,因为
storm.py
中的storm\u EXT\u类路径
没有正确添加-添加storm\u EXT\u类路径
中的每个字符而不是整个字符串(即使使用方括号、引号等)使用storm jar
命令提交拓扑时,storm将查看~/.storm目录,并将该目录中的任何文件添加到类路径中。这是我曾经使用过的方法,不必将依赖的jar打包到我提交给Storm的主jar中
另见
从:
jar语法:风暴jar拓扑jar路径类
使用指定的参数运行类的主方法。风暴
~/.storm中的jar和config放在类路径上。过程是
配置为StormSubmitter将在
提交拓扑时的拓扑jar路径
希望这有帮助 我也是storm框架的新手,也面临着同样的问题。我正在使用storm apache-storm-0.9.2-Cubating版本,并在windows机器上进行测试。我有几个外部JAR,我想添加到storm类路径中,而不把它们放在${storm_HOME}/lib或${storm_HOME}/conf目录下。为了实现这一点,我修改了${STORM_HOME}/bin/STORM config.cmd文件,并在下面添加了新变量,该变量将指向外部jar位置(在我的例子中是C:\STORM installation\topology\custom jars) 设置STORM\u BIN\u DIR=%STORM\u HOME%\BIN 设置STORM\u CUSTOM\u DIR=C:\STORM installation\topology\CUSTOM jars 修改同一文件中的下一行,将所有外部JAR追加到类路径,如下所示 设置类路径=!类路径!;%风暴之家%\lib* 设置类路径=%CLASSPATH%;%风暴\u自定义\u目录%* 现在,如果您使用%storm\u HOME%\bin\storm classpath命令检查storm类路径,您的外部JAR应该显示在类路径中
希望对您有所帮助。自2014年以来,storm似乎也发现了这个问题,现在有了解决方案(我使用的是版本
1.1.1
)
见文件:
语法:风暴jar拓扑jar路径类
使用指定的参数运行类的主方法。风暴
~/.storm
中的JAR和配置放在类路径上。过程是
配置为StormSubmitter将在
提交拓扑时拓扑jar路径
当您想要运送应用程序中未包含的其他罐子时
jar,您可以使用逗号分隔的字符串将它们传递给--jars
选项。
例如,--jars
“您的本地jar.jar,您的-local-jar2.jar”
将加载您的本地jar.jar
和您的-local-jar2.jar
。当你
要发布maven工件及其可传递依赖项,您可以
用逗号分隔的字符串将它们传递给--artifacts
。你也可以
排除一些依赖项,如您在maven pom中所做的操作。请
在项目后添加带有“^”分隔字符串的排除项目。
例如,--artifacts“redis.clients:jedis:2.9.0,org.apache.kafka:kafka_2.10:0.8.2.2^org.slf4j:slf4j-log4j12”
将加载绝地
和卡夫卡
artifacta