Storm 的配置文件格式很容易出错, 从而导致 Storm 无法正确启动, 由格式导致的错误信息一般如下所示:
- Exception in thread "main" java.lang.ExceptionInInitializerError
- at org.apache.storm.config$read_storm_config.invoke(config.clj:78)
- at org.apache.storm.config$fn__906.invoke(config.clj:100)
- at org.apache.storm.config__init.load(Unknown Source)
- at org.apache.storm.config__init.<clinit>(Unknown Source)
- at java.lang.Class.forName0(Native Method)
- at java.lang.Class.forName(Class.java:348)
- at clojure.lang.RT.classForName(RT.java:2154)
- at clojure.lang.RT.classForName(RT.java:2163)
- at clojure.lang.RT.loadClassForName(RT.java:2182)
- at clojure.lang.RT.load(RT.java:436)
- at clojure.lang.RT.load(RT.java:412)
- at clojure.core$load$fn__5448.invoke(core.clj:5866)
- at clojure.core$load.doInvoke(core.clj:5865)
- at clojure.lang.RestFn.invoke(RestFn.java:408)
- at clojure.core$load_one.invoke(core.clj:5671)
- at clojure.core$load_lib$fn__5397.invoke(core.clj:5711)
- at clojure.core$load_lib.doInvoke(core.clj:5710)
- at clojure.lang.RestFn.applyTo(RestFn.java:142)
- at clojure.core$apply.invoke(core.clj:632)
- at clojure.core$load_libs.doInvoke(core.clj:5753)
- at clojure.lang.RestFn.applyTo(RestFn.java:137)
- at clojure.core$apply.invoke(core.clj:634)
- at clojure.core$use.doInvoke(core.clj:5843)
- at clojure.lang.RestFn.invoke(RestFn.java:408)
- at org.apache.storm.command.config_value$loading__5340__auto____12530.invoke(config_value.clj:16)
- at org.apache.storm.command.config_value__init.load(Unknown Source)
- at org.apache.storm.command.config_value__init.<clinit>(Unknown Source)
- at java.lang.Class.forName0(Native Method)
- at java.lang.Class.forName(Class.java:348)
- at clojure.lang.RT.classForName(RT.java:2154)
- at clojure.lang.RT.classForName(RT.java:2163)
- at clojure.lang.RT.loadClassForName(RT.java:2182)
- at clojure.lang.RT.load(RT.java:436)
- at clojure.lang.RT.load(RT.java:412)
- at clojure.core$load$fn__5448.invoke(core.clj:5866)
- at clojure.core$load.doInvoke(core.clj:5865)
- at clojure.lang.RestFn.invoke(RestFn.java:408)
- at clojure.lang.Var.invoke(Var.java:379)
- at org.apache.storm.command.config_value.<clinit>(Unknown Source)
- Caused by: while scanning a simple key
- in 'reader', line 3, column 1:
- storm.health.check.timeout.ms:5000
- ^
- could not found expected ':'
- in 'reader', line 4, column 1:
- supervisor.slots.ports:
- ^
造成这种错误的主要原因, 是由于配置文件中的特殊位置无空格, 然而要解决这个问题又比较棘手. 这里介绍一种简便有效的办法. 只需要使用 VIM 打开配置文件, 进行修改时让所有配置内容都显色即可, 正确的全部显色的配置文件如下所示:
image.PNG
为了说明, 特意设计了一个错误用例, 用于和正确用例进行比对, 错误的未完全显色的配置文件如下所示:
image.PNG
错误配置文件相较于正确配置文件, 唯一的差别就在于参数 "5000" 前面少一个空格.
来源: http://www.jianshu.com/p/8be68502fc36