Exception in thread"main" org.apache.storm.utils.NimbusLeaderNotFoundException: Couldnot find leader nimbus from seed hosts [localhost]. Did you specify a validlist of nimbus hosts for config nimbus.seeds?
atorg.apache.storm.utils.NimbusClient.getConfiguredClientAs(NimbusClient.java:111)
atorg.apache.storm.utils.NimbusClient.getConfiguredClient(NimbusClient.java:57)
atorg.apache.storm.blobstore.NimbusBlobStore.prepare(NimbusBlobStore.java:268)
atorg.apache.storm.StormSubmitter.getListOfKeysFromBlobStore(StormSubmitter.java:595)
atorg.apache.storm.StormSubmitter.validateConfs(StormSubmitter.java:561)
atorg.apache.storm.StormSubmitter.submitTopologyAs(StormSubmitter.java:207)
atorg.apache.storm.StormSubmitter.submitTopology(StormSubmitter.java:387)
atorg.apache.storm.StormSubmitter.submitTopology(StormSubmitter.java:159)
值eclipse中跑storm与kafka集成example,本地模式成功执行,远程模式提示上面的错误。
这是对初学者的坑,单用storm的Topology是可以的,但用storm与kafka集成ToPology就是不行。
在官方的storm与kafka集成example中有这样一段注释:
storm jarstorm-starter-topologies.jarorg.apache.storm.starter.trident.TridentKafkaWordCount zkhost:port broker:port wordcount
写好的ToPology要在storm集群用上面的命令注册使用(自己eclipse调试时修改了一下,用了内置参数还是不行),如果在eclipse上调试集群模式。Topology连接storm集群前会读取本地storm-core.jar中的配置文件default.yaml中的nimbus.seeds=[localhost], 因为nimbus.seeds是localhost,程序会先在zookeeper中查找localhost:6627的 leader nimbus,但是zookeeper上没有localhost:6627的 leader nimbus,使用程序找不到就报错了。
就算把本地storm-core.jar中的配置文件default.yaml中的nimbus.seeds改成对应集群的seeds ,也是不行的。因为他会提示如下错误:
33721 [main]INFO o.a.s.u.NimbusClient - Found leadernimbus : mine134:6627
33798 [main]INFO o.a.s.StormSubmitter - Uploadingdependencies - jars...
33800 [main]INFO o.a.s.StormSubmitter - Uploadingdependencies - artifacts...
33801 [main]INFO o.a.s.StormSubmitter - DependencyBlob keys - jars : [] / artifacts : []
Exception in thread"main" java.lang.RuntimeException: Must submit topologies using the'storm' client script so that StormSubmitter knows which jar to upload.
atorg.apache.storm.StormSubmitter.submitJarAs(StormSubmitter.java:470)
atorg.apache.storm.StormSubmitter.submitTopologyInDistributeMode(StormSubmitter.java:319)
atorg.apache.storm.StormSubmitter.submitTopologyAs(StormSubmitter.java:260)
atorg.apache.storm.StormSubmitter.submitTopology(StormSubmitter.java:387)
atorg.apache.storm.StormSubmitter.submitTopology(StormSubmitter.java:159)
就是说要调用集群中client的script上传注册到集群(如果牛人是否改storm-kafka的插件源码实现本地访问集群)。
初学者还是老老实实的用本地吧?花了一天的是时间百度,测试,折腾,最后调试看源码,到头来还是这要的结果。。。