由于在部署到远程集群

时间:2015-10-14 22:07:12

标签: build.gradle apache-storm

我在同一台机器上运行单节点远程群集(所有nimbus,supervisor,zookeeper)。我将拓扑(简单的感叹拓扑)部署到此远程集群。拓扑和jar已成功提交,但群集中没有任何事情发生。

当我检查主管日志时,我可以看到: 2015-10-14T21:24:26.340 + 0000 b.s.d.supervisor [INFO] 42dd0337-1182-45b0-9385-14570c7e0b09仍未启动

工作日志文件为空。

在主管日志中稍微调试一下,我可以看到 使用命令启动worker :(某些java命令)..启动此java命令我可以看到此错误:

引起:java.lang.RuntimeException:找到多个defaults.yaml资源。您可能正在将Storm jar与拓扑jar捆绑在一起。

我在互联网和其他东西上调试了更多,并修改了我的build.gradle文件,但每当我部署拓扑时仍然会出现同样的错误。

这是我的gradle文件

dependencies {

    compile group: 'org.springframework.boot', name: 'spring-boot-starter-actuator', version: springBootVersion

    compile group: 'org.quartz-scheduler', name: 'quartz', version: quartzVersion

compile group: 'clj-stacktrace' , name: 'clj-stacktrace',version: cljStackTrace

compile group: 'org.apache.storm' , name: 'storm-core',version: stormVersion

    ext {

      fatJarExclude = true

  }

}
task uberjar(type: Jar) {

from files(sourceSets.main.output.classesDir)

from {configurations.compile.collect {zipTree(it)}} {

    exclude "META-INF/*.SF"

    exclude "META-INF/*.DSA"

    exclude "META-INF/*.RSA"

    exclude "META-INF/LICENSE"
}
manifest {

attributes 'Main-Class': 'storm.topology.ExclamationTopology'
}
}

3 个答案:

答案 0 :(得分:2)

jar文件不得包含defaults.yaml文件。因此,您需要通过

将其排除
exclude "defaults.yaml"

实际上我建议从jar中排除所有Storm依赖项。它们不是必需的,并且不必要地增加了脂肪罐的尺寸。

答案 1 :(得分:0)

有两个选择:

1-使用winrar删除" defaults.yaml"在.jar

2-在pom.xml storm-core中添加提供的内容。

在我的pom.xml中:

<dependency>
    <groupId>org.apache.storm</groupId>
    <artifactId>storm-core</artifactId>
    <version>0.9.1-incubating</version>
    <scope>provided</scope>
</dependency>

答案 2 :(得分:0)

在打包拓扑jar时,请不要包含Storm jar,因为Storm会将这些放在类路径中。

参考

http://storm.apache.org/releases/1.0.2/Troubleshooting.html