Question

My Nimbus host and supervisor run properly. When I submit a wordcount topology to the Nimbus host it successfully upload. After uploading topology supervisor giving error

kill: No such process

When I check the worker-6001.log and 6002.log I found a following error:

2014-02-09 17:20:05 b.s.m.TransportFactory [INFO] Storm peer transport     plugin:backtype.storm.messaging.zmq
2014-02-09 17:20:05 b.s.d.worker [ERROR] Error on initialization of server mk-worker
java.lang.UnsatisfiedLinkError: no jzmq in java.library.path
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1886) ~[na:1.7.0_51]
at java.lang.Runtime.loadLibrary0(Runtime.java:849) ~[na:1.7.0_51]
at java.lang.System.loadLibrary(System.java:1088) ~[na:1.7.0_51]
at org.zeromq.ZMQ.<clinit>(ZMQ.java:34) ~[jzmq-2.1.0.jar:na]
at java.lang.Class.forName0(Native Method) ~[na:1.7.0_51]
at java.lang.Class.forName(Class.java:190) ~[na:1.7.0_51]
at backtype.storm.messaging.zmq$loading__4784__auto__.invoke(zmq.clj:1) ~[storm-core-0.9.0.1.jar:na]
at backtype.storm.messaging.zmq__init.load(Unknown Source) ~[storm-core-0.9.0.1.jar:na]
at backtype.storm.messaging.zmq__init.<clinit>(Unknown Source) ~[storm-core-0.9.0.1.jar:na]
at java.lang.Class.forName0(Native Method) ~[na:1.7.0_51]
at java.lang.Class.forName(Class.java:270) ~[na:1.7.0_51]
at clojure.lang.RT.loadClassForName(RT.java:2056) ~[clojure-1.4.0.jar:na]
at clojure.lang.RT.load(RT.java:419) ~[clojure-1.4.0.jar:na]
at clojure.lang.RT.load(RT.java:400) ~[clojure-1.4.0.jar:na]
at clojure.core$load$fn__4890.invoke(core.clj:5415) ~[clojure-1.4.0.jar:na]
at clojure.core$load.doInvoke(core.clj:5414) ~[clojure-1.4.0.jar:na]
at clojure.lang.RestFn.invoke(RestFn.java:408) [clojure-1.4.0.jar:na]
at clojure.lang.Var.invoke(Var.java:415) ~[clojure-1.4.0.jar:na]
at backtype.storm.messaging.zmq.<clinit>(Unknown Source) ~[storm-core-0.9.0.1.jar:na]
at java.lang.Class.forName0(Native Method) ~[na:1.7.0_51]
at java.lang.Class.forName(Class.java:190) ~[na:1.7.0_51]
at backtype.storm.messaging.TransportFactory.makeContext(TransportFactory.java:21) ~[storm-core-0.9.0.1.jar:na]
at backtype.storm.daemon.worker$worker_data$fn__5732.invoke(worker.clj:170) ~[storm-core-0.9.0.1.jar:na]
at backtype.storm.util$assoc_apply_self.invoke(util.clj:761) ~[storm-core-0.9.0.1.jar:na]
at backtype.storm.daemon.worker$worker_data.invoke(worker.clj:166) ~[storm-core-0.9.0.1.jar:na]
at backtype.storm.daemon.worker$fn__5882$exec_fn__1229__auto____5883.invoke(worker.clj:338) ~[storm-core-0.9.0.1.jar:na]
at clojure.lang.AFn.applyToHelper(AFn.java:185) [clojure-1.4.0.jar:na]
at clojure.lang.AFn.applyTo(AFn.java:151) [clojure-1.4.0.jar:na]
at clojure.core$apply.invoke(core.clj:601) ~[clojure-1.4.0.jar:na]
at backtype.storm.daemon.worker$fn__5882$mk_worker__5938.doInvoke(worker.clj:329)     [storm-core-0.9.0.1.jar:na]
at clojure.lang.RestFn.invoke(RestFn.java:512) [clojure-1.4.0.jar:na]
at backtype.storm.daemon.worker$_main.invoke(worker.clj:439) [storm-core-0.9.0.1.jar:na]
at clojure.lang.AFn.applyToHelper(AFn.java:172) [clojure-1.4.0.jar:na]
at clojure.lang.AFn.applyTo(AFn.java:151) [clojure-1.4.0.jar:na]
at backtype.storm.daemon.worker.main(Unknown Source) [storm-core-0.9.0.1.jar:na]
2014-02-09 17:20:05 b.s.util [INFO] Halting process: ("Error on initialization")

my configuration is

storm.yaml

storm.zookeeper.servers:
 - "192.168.1.2"

storm.local.dir: "/usr/local/storm/data"
java.library.path: "/usr/lib/jvm/java-7-openjdk-amd64/lib"

nimbus.host: "192.168.1.2"
nimbus.task.launch.secs: 240
supervisor.worker.start.timeout.secs: 240
supervisor.worker.timeout.secs: 240  
supervisor.slots.ports:
- 6700
- 6701

java version

java version "1.7.0_51"
OpenJDK Runtime Environment (IcedTea 2.4.4) (7u51-2.4.4-0ubuntu0.12.04.2)
OpenJDK 64-Bit Server VM (build 24.45-b08, mixed mode)

I used this blog as a example.

Was it helpful?

Solution

The resolution depends on the version of Storm you're running.


[EDIT]

Storm 0.9.1 has just been released today (22nd Feb 2014): release notes mention zeroMQ dependencies are now by default replaced by Netty

https://git-wip-us.apache.org/repos/asf?p=incubator-storm.git;a=blob_plain;f=CHANGELOG.md;hb=254ec135b9a67b1e7bc8e979356274aee2e7d715


The installation instructions of the previous version (I successfully used those for 0.8.2 in the past) are here, they indeed mention zeroMq and jzmq as dependencies:

https://github.com/nathanmarz/storm/wiki/Setting-up-a-Storm-cluster

The installation instructions of 0.9.0.1 are here: they do not mention zeroMQ nor jzmq:

http://storm.incubator.apache.org/documentation/Setting-up-a-Storm-cluster.html

According to the release notes of Storm 0.9.0, we now have the choice between Netty and ZeroMQ for tuple transport, so in theory you should be able to solve this issue by upgrading to 0.9.0.1, not install zeroMQ nor jzmq and configure storm as mentioned here:

(dawn, not allowed to post a 3rd link, ok, the release notes are on the Storm blog, in the Storm incubator apache web site ^__^)

-- Svend

OTHER TIPS

Obviously, jzmq is missing. Make sure that jzmq was built successfully on all your machines. Make sure also that jzmq is under java.library.path.

And by the way, the file is storm.yaml not Storm.yaml

Check this question on how to Compiling JZMQ on Ubuntu.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top