找到多个defaults.yaml资源

找到多个defaults.yaml资源,第1张

找到多个defaults.yaml资源

在内部

LocalCluster
或通过远程运行拓扑
StormSubmitter
(这是项目中的默认设置)存在根本区别。

的范围

storm-core
设置为
<scope>provided</scope>
默认值,因为这些类文件仍然在群​​集中可用。
provided
告诉Maven,这些类一定不能包含
jar
汇编文件中,从而减小了jar的大小。此外,如果文件被多次提供,则可以避免冲突-
default.yaml
如果将范围更改为,则会发生冲突
compile
。在这种情况下,来自的所有文件
storm-core
都打包到您中
jar
并提交给集群。Storm在
defaults.yaml
本地和群集中的本地计算机上(即本地在工作计算机上)找到文件
jar
。因此,Storm不知道使用哪个,并引发错误。

但是,

provided
如果您也在本地运行,则不包括那些类文件。当然,在本地这些文件不是自动可用的,但是在启动本地JVM时必须包含在
CLASSPATH中 。由于
provided
storm-core
您排除文件得到
ClassNotFound
异常。

作为每次要提交到不同环境时更改范围的一种替代方法,可以将范围设置为,

compile
并在
maven-jar-plugin
设置中明确包含拓扑Main /
Bolt / Spout类。此明确包含将自动从jar中排除所有其他文件,即,从中排除所有文件
storm-core

<plugin>  <groupId>org.apache.maven.plugins</groupId>  <artifactId>maven-jar-plugin</artifactId>  <version>2.6</version>  <executions>    <execution>      <id>MyTopology</id>      <phase>package</phase>      <goals>        <goal>jar</goal>      </goals>      <configuration>        <includes>          <include>my/topology/package*.class</include>        </includes>      </configuration>    </execution>  </executions></plugin>


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zaji/5429566.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-12-11
下一篇2022-12-11

发表评论

登录后才能评论

评论列表(0条)

    保存