Yaml 在本地模式下运行storm拓扑时出错:

Yaml 在本地模式下运行storm拓扑时出错:,yaml,apache-storm,apache-zookeeper,Yaml,Apache Storm,Apache Zookeeper,这是我在storm 0.9.4版本中尝试以本地模式实现storm拓扑时遇到的错误 Caused by: expected '<document start>', but found BlockMappingStart in 'reader', line 24, column 1: storm.zookeeper.port: 2181 ^ at org.yaml.snakeyaml.parser.ParserImpl$ParseDocumentStart.p

这是我在storm 0.9.4版本中尝试以本地模式实现storm拓扑时遇到的错误

Caused by: expected '<document start>', but found BlockMappingStart
 in 'reader', line 24, column 1:
    storm.zookeeper.port: 2181
    ^

    at org.yaml.snakeyaml.parser.ParserImpl$ParseDocumentStart.produce(ParserImpl.java:225)
    at org.yaml.snakeyaml.parser.ParserImpl.peekEvent(ParserImpl.java:158)
    at org.yaml.snakeyaml.parser.ParserImpl.checkEvent(ParserImpl.java:143)
    at org.yaml.snakeyaml.composer.Composer.getSingleNode(Composer.java:108)
    at org.yaml.snakeyaml.constructor.BaseConstructor.getSingleData(BaseConstructor.java:120)
    at org.yaml.snakeyaml.Yaml.loadFromReader(Yaml.java:481)
    at org.yaml.snakeyaml.Yaml.load(Yaml.java:424)
    at backtype.storm.utils.Utils.findAndReadConfigFile(Utils.java:141)
    at backtype.storm.utils.Utils.readStormConfig(Utils.java:188)
    at backtype.storm.utils.Utils.<clinit>(Utils.java:71)
    ... 100 more

您的yaml文件出现了一些问题。storm无法解析它。确保文件未损坏或配置正确

你可以

编辑:

尝试更改:

    nimbus.host: localhost

请注意,指定值周围有双引号。

现在,如果您将其复制到任何YAML验证器中,它将显示已验证的YAML内容。但这只是storm.yaml文件中的解析错误。检查文件中是否有任何不需要的选项卡空间或空格。 尝试删除所有选项卡或空格并重写。那么它应该可以正常工作。您还可以在Yamlint或上验证yaml文件


还要检查~/.storm文件夹中的storm.yaml文件。这两个文件应该相同且正确。

看起来像是snakeyaml的问题,该文件在Ruby中解析得很好。你用的是什么版本?我试着用Ruby的版本做了一些修改,我仍然不确定这个问题。我是否也需要更改snakeyaml的版本,还是需要更改以获得最新版本的Ruby?解决了这个问题。我在我的根目录中也有一些.storm文件夹,这是我在某种测试中创建的,保存在这里的storm.yaml文件引起了所有的麻烦。不,我已经验证了我的.yaml文件。这可能是Ruby的一个问题,正如某位同事所建议的那样comments@user3550694检查更新,看看是否有帮助。。这一定是配置文件被破坏的原因。嗨,我已经解决了这个问题。请参阅评论部分。我确实将storm.yaml文件复制到了验证器中,那里一切正常,没有任何与选项卡或空格相关的问题。
    nimbus.host: localhost
    nimbus.host: "localhost"
    storm.local.dir: /var/stormtmp
    storm.local.dir: "/var/stormtmp"
    storm.zookeeper.servers: 
       - localhost
    storm.zookeeper.servers: 
      - "localhost"