遇到此问题,首先查看storm目录下的logs文件。
若发现supervisor.log中如果出现很多still hasn't started。并且没有提示worker出现错误。
查看worker日志也没有错误。
发现\bin\目录下有很多hs_err_pidxxx的日志文件。
查看文件发现报错为:
Java frames: (J=compiled Java code, j=interpreted, Vv=VM code)
j org.zeromq.ZMQ$Socket.setLongSockopt(IJ)V+0
j org.zeromq.ZMQ$Socket.setHWM(J)V+16
j zilch.mq$set_hwm.invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;+25
j backtype.storm.messaging.zmq.ZMQContext.connect(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;+64
j backtype.storm.daemon.worker$mk_refresh_connections$this__4293$iter__4300__4304$fn__4305.invoke()Ljava/lang/Object;+567
J clojure.lang.RT.seq(Ljava/lang/Object;)Lclojure/lang/ISeq;
J clojure.core$seq.invoke(Ljava/lang/Object;)Ljava/lang/Object;
j clojure.core$dorun.invoke(Ljava/lang/Object;)Ljava/lang/Object;+10
j clojure.core$doall.invoke(Ljava/lang/Object;)Ljava/lang/Object;+10
j backtype.storm.daemon.worker$mk_refresh_connections$this__4293.invoke(Ljava/lang/Object;)Ljava/lang/Object;+512
j backtype.storm.daemon.worker$fn__4348$exec_fn__1228__auto____4349.invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;+620
j clojure.lang.AFn.applyToHelper(Lclojure/lang/IFn;Lclojure/lang/ISeq;)Ljava/lang/Object;+416
j clojure.lang.AFn.applyTo(Lclojure/lang/ISeq;)Ljava/lang/Object;+8
j clojure.core$apply.invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;+26
j backtype.storm.daemon.worker$fn__4348$mk_worker__4404.doInvoke(Ljava/lang/Object;)Ljava/lang/Object;+16
j clojure.lang.RestFn.invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;+123
j backtype.storm.daemon.worker$_main.invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;+77
j clojure.lang.AFn.applyToHelper(Lclojure/lang/IFn;Lclojure/lang/ISeq;)Ljava/lang/Object;+261
j clojure.lang.AFn.applyTo(Lclojure/lang/ISeq;)Ljava/lang/Object;+8
j backtype.storm.daemon.worker.main([Ljava/lang/String;)V+29
v ~StubRoutines::call_stub
其错误为zeromq或者jzmq版本问题,建议zeromq使用1.2.7。
其解决办法为:
首先 rm -rf xxx(zeromq)删除zeromq
删除jzmq (rm -rf jzmq目录)
之后使用安装教程 安装ZMQ
- wget http://download.zeromq.org/zeromq-2.1.7.tar.gz
- tar -xzf zeromq-2.1.7.tar.gz
- cd zeromq-2.1.7
- ./configure
- make
- sudo make install
- git clone https://github.com/nathanmarz/jzmq.git
- cd jzmq
- ./autogen.sh
- ./configure
- make
- sudo make install
-
详细的storm配置参见:http://blog.csdn.net/blue_jjw/article/details/9264131
可能出现 -bash: git: command not found
yum list git
看看本机是否已经安装成功git
如果提示已经安装的话,执行 which git 看看在哪里
如果提示木有安装的话, yum install git -y 进行安装即可
最后再启动storm即可。
注意 一定不能用 jzmq-master
若是无法启动supervisor,请检查防火墙是否关闭,service iptables status
关闭防火墙使用命令:service iptables stop
若还是启动不了,查看 hosts文件中的ip 和主机名的映射关系