2015-10-14 56 views
0

我在同一臺計算機上運行了單個節點遠程集羣(所有nimbus,supervisor,zookeeper)。我將拓撲(簡單感嘆號拓撲)部署到此遠程羣集。當拓撲和jar成功提交時,集羣中沒有任何事情發生。由於在部署到遠程集羣時發現多個defaults.yaml資源,拓撲無法正常工作

當我檢查了主管日誌,我可以看到這一點: 2015-10-14T21:24:26.340 + 0000 bsdsupervisor [INFO] 42dd0337-1182-45b0-9385-14570c7e0b09還沒有開始

工作日誌文件爲空。

論監督員日誌調試了一下,我可以看到 下水工人用命令:(一些java命令)..Firing這個java命令,我可以看到這個錯誤:

產生的原因:了java.lang.RuntimeException :找到多個defaults.yaml資源。您可能會將Storm Jars與拓撲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' 
} 
} 
+0

你怎麼可以排除 「defaults.yaml」? – user1

回答

2

JAR文件中不能包含defaults.yaml文件。因此,你需要排除它通過

exclude "defaults.yaml" 

其實我會建議從你的jar中排除所有Storm依賴關係。它們不是必需的,並且不必要地增加了胖罐的尺寸。

+0

是的,你是正確的:)。謝謝..我通過遵循這個「http://kennethjorgensen.com/blog/2014/fat-jars-with-excluded-dependencies-in-gradle」來解決它。另外馬蒂亞斯,我相信這應該包括在風暴的文檔,以便人流不會最終浪費像我這樣的時間:) –

+0

也許它應該被添加。只需打開一個拉取請求;)我很確定風暴人們會很樂意接受它。 –

0

有兩種opcions:

1-在該.jar

2-添加在pom.xml風暴核作爲提供用winrar 「defaults.yaml」 刪除。

在我的pom.xml:

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