You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@storm.apache.org by Franca van Kaam <fr...@gmail.com> on 2015/05/28 12:10:33 UTC

custom scheduler ClassNotFoundException

Hello,

I am trying to implement a custom scheduler as explained in
http://xumingming.sinaapp.com/885/twitter-storm-how-to-develop-a-pluggable-scheduler/
.

However I seem to do something wrong in the last step of the tutorial,
because when I try to launch nimbus I get a ClassNotFoundException.

2015-05-28T11:39:24.499+0200 b.s.d.nimbus [INFO] Using custom scheduler:
storm.CameraScheduler
2015-05-28T11:39:24.514+0200 b.s.d.nimbus [ERROR] Error on initialization
of server service-handler
java.lang.ClassNotFoundException: storm.CameraScheduler
at java.net.URLClassLoader$1.run(URLClassLoader.java:372) ~[na:1.8.0_31]
at java.net.URLClassLoader$1.run(URLClassLoader.java:361) ~[na:1.8.0_31]
at java.security.AccessController.doPrivileged(Native Method) ~[na:1.8.0_31]
at java.net.URLClassLoader.findClass(URLClassLoader.java:360) ~[na:1.8.0_31]
at java.lang.ClassLoader.loadClass(ClassLoader.java:424) ~[na:1.8.0_31]
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
~[na:1.8.0_31]
at java.lang.ClassLoader.loadClass(ClassLoader.java:357) ~[na:1.8.0_31]
at java.lang.Class.forName0(Native Method) ~[na:1.8.0_31]
at java.lang.Class.forName(Class.java:260) ~[na:1.8.0_31]
at backtype.storm.util$new_instance.invoke(util.clj:946)
~[storm-core-0.9.3.jar:0.9.3]
at backtype.storm.daemon.nimbus$mk_scheduler.invoke(nimbus.clj:53)
~[storm-core-0.9.3.jar:0.9.3]
at backtype.storm.daemon.nimbus$nimbus_data.invoke(nimbus.clj:78)
~[storm-core-0.9.3.jar:0.9.3]
at
backtype.storm.daemon.nimbus$fn__5043$exec_fn__1108__auto____5044.invoke(nimbus.clj:898)
~[storm-core-0.9.3.jar:0.9.3]
at clojure.lang.AFn.applyToHelper(AFn.java:163) [clojure-1.5.1.jar:na]
at clojure.lang.AFn.applyTo(AFn.java:151) [clojure-1.5.1.jar:na]
at clojure.core$apply.invoke(core.clj:617) ~[clojure-1.5.1.jar:na]
at
backtype.storm.daemon.nimbus$fn__5043$service_handler__5133.doInvoke(nimbus.clj:895)
[storm-core-0.9.3.jar:0.9.3]
at clojure.lang.RestFn.invoke(RestFn.java:421) [clojure-1.5.1.jar:na]
at backtype.storm.daemon.nimbus$launch_server_BANG_.invoke(nimbus.clj:1152)
[storm-core-0.9.3.jar:0.9.3]
at backtype.storm.daemon.nimbus$_launch.invoke(nimbus.clj:1184)
[storm-core-0.9.3.jar:0.9.3]
at backtype.storm.daemon.nimbus$_main.invoke(nimbus.clj:1206)
[storm-core-0.9.3.jar:0.9.3]
at clojure.lang.AFn.applyToHelper(AFn.java:159) [clojure-1.5.1.jar:na]
at clojure.lang.AFn.applyTo(AFn.java:151) [clojure-1.5.1.jar:na]
at backtype.storm.daemon.nimbus.main(Unknown Source)
[storm-core-0.9.3.jar:0.9.3]
2015-05-28T11:39:24.518+0200 b.s.util [ERROR] Halting process: ("Error on
initialization")
java.lang.RuntimeException: ("Error on initialization")
at backtype.storm.util$exit_process_BANG_.doInvoke(util.clj:325)
[storm-core-0.9.3.jar:0.9.3]
at clojure.lang.RestFn.invoke(RestFn.java:423) [clojure-1.5.1.jar:na]
at
backtype.storm.daemon.nimbus$fn__5043$service_handler__5133.doInvoke(nimbus.clj:895)
[storm-core-0.9.3.jar:0.9.3]
at clojure.lang.RestFn.invoke(RestFn.java:421) [clojure-1.5.1.jar:na]
at backtype.storm.daemon.nimbus$launch_server_BANG_.invoke(nimbus.clj:1152)
[storm-core-0.9.3.jar:0.9.3]
at backtype.storm.daemon.nimbus$_launch.invoke(nimbus.clj:1184)
[storm-core-0.9.3.jar:0.9.3]
at backtype.storm.daemon.nimbus$_main.invoke(nimbus.clj:1206)
[storm-core-0.9.3.jar:0.9.3]
at clojure.lang.AFn.applyToHelper(AFn.java:159) [clojure-1.5.1.jar:na]
at clojure.lang.AFn.applyTo(AFn.java:151) [clojure-1.5.1.jar:na]
at backtype.storm.daemon.nimbus.main(Unknown Source)
[storm-core-0.9.3.jar:0.9.3]


How should I package my scheduler and where exactly should I put it?
At the moment what I have done is package my CameraScheduler.class in
CameraScheduler.jar and add it to my $STORM_HOME/lib. But apparently this
is wrong... Any help?

Re: custom scheduler ClassNotFoundException

Posted by Ken Danniswara <ke...@kth.se>.
Hi,

I'm sorry i think I'm messed up between scheduler and Hooks. I put the
Scheduler in the $STORM_HOME/lib also. In this case, are you sure the jar
is loaded when the topology is submitted? Usually in my case is the package
name

On Thu, May 28, 2015 at 12:24 PM, Ken Danniswara <ke...@kth.se> wrote:

> Hi,
>
> In my case I'm putting the custom scheduler in the same jar with the
> submitted topology. I don't know if this is actually the best practice or
> not, but it works for me.
>
> On Thu, May 28, 2015 at 12:10 PM, Franca van Kaam <
> franca.vankaam@gmail.com> wrote:
>
>> Hello,
>>
>> I am trying to implement a custom scheduler as explained in
>> http://xumingming.sinaapp.com/885/twitter-storm-how-to-develop-a-pluggable-scheduler/
>> .
>>
>> However I seem to do something wrong in the last step of the tutorial,
>> because when I try to launch nimbus I get a ClassNotFoundException.
>>
>> 2015-05-28T11:39:24.499+0200 b.s.d.nimbus [INFO] Using custom scheduler:
>> storm.CameraScheduler
>> 2015-05-28T11:39:24.514+0200 b.s.d.nimbus [ERROR] Error on initialization
>> of server service-handler
>> java.lang.ClassNotFoundException: storm.CameraScheduler
>> at java.net.URLClassLoader$1.run(URLClassLoader.java:372) ~[na:1.8.0_31]
>> at java.net.URLClassLoader$1.run(URLClassLoader.java:361) ~[na:1.8.0_31]
>> at java.security.AccessController.doPrivileged(Native Method)
>> ~[na:1.8.0_31]
>> at java.net.URLClassLoader.findClass(URLClassLoader.java:360)
>> ~[na:1.8.0_31]
>> at java.lang.ClassLoader.loadClass(ClassLoader.java:424) ~[na:1.8.0_31]
>> at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
>> ~[na:1.8.0_31]
>> at java.lang.ClassLoader.loadClass(ClassLoader.java:357) ~[na:1.8.0_31]
>> at java.lang.Class.forName0(Native Method) ~[na:1.8.0_31]
>> at java.lang.Class.forName(Class.java:260) ~[na:1.8.0_31]
>> at backtype.storm.util$new_instance.invoke(util.clj:946)
>> ~[storm-core-0.9.3.jar:0.9.3]
>> at backtype.storm.daemon.nimbus$mk_scheduler.invoke(nimbus.clj:53)
>> ~[storm-core-0.9.3.jar:0.9.3]
>> at backtype.storm.daemon.nimbus$nimbus_data.invoke(nimbus.clj:78)
>> ~[storm-core-0.9.3.jar:0.9.3]
>> at
>> backtype.storm.daemon.nimbus$fn__5043$exec_fn__1108__auto____5044.invoke(nimbus.clj:898)
>> ~[storm-core-0.9.3.jar:0.9.3]
>> at clojure.lang.AFn.applyToHelper(AFn.java:163) [clojure-1.5.1.jar:na]
>> at clojure.lang.AFn.applyTo(AFn.java:151) [clojure-1.5.1.jar:na]
>> at clojure.core$apply.invoke(core.clj:617) ~[clojure-1.5.1.jar:na]
>> at
>> backtype.storm.daemon.nimbus$fn__5043$service_handler__5133.doInvoke(nimbus.clj:895)
>> [storm-core-0.9.3.jar:0.9.3]
>> at clojure.lang.RestFn.invoke(RestFn.java:421) [clojure-1.5.1.jar:na]
>> at
>> backtype.storm.daemon.nimbus$launch_server_BANG_.invoke(nimbus.clj:1152)
>> [storm-core-0.9.3.jar:0.9.3]
>> at backtype.storm.daemon.nimbus$_launch.invoke(nimbus.clj:1184)
>> [storm-core-0.9.3.jar:0.9.3]
>> at backtype.storm.daemon.nimbus$_main.invoke(nimbus.clj:1206)
>> [storm-core-0.9.3.jar:0.9.3]
>> at clojure.lang.AFn.applyToHelper(AFn.java:159) [clojure-1.5.1.jar:na]
>> at clojure.lang.AFn.applyTo(AFn.java:151) [clojure-1.5.1.jar:na]
>> at backtype.storm.daemon.nimbus.main(Unknown Source)
>> [storm-core-0.9.3.jar:0.9.3]
>> 2015-05-28T11:39:24.518+0200 b.s.util [ERROR] Halting process: ("Error on
>> initialization")
>> java.lang.RuntimeException: ("Error on initialization")
>> at backtype.storm.util$exit_process_BANG_.doInvoke(util.clj:325)
>> [storm-core-0.9.3.jar:0.9.3]
>> at clojure.lang.RestFn.invoke(RestFn.java:423) [clojure-1.5.1.jar:na]
>> at
>> backtype.storm.daemon.nimbus$fn__5043$service_handler__5133.doInvoke(nimbus.clj:895)
>> [storm-core-0.9.3.jar:0.9.3]
>> at clojure.lang.RestFn.invoke(RestFn.java:421) [clojure-1.5.1.jar:na]
>> at
>> backtype.storm.daemon.nimbus$launch_server_BANG_.invoke(nimbus.clj:1152)
>> [storm-core-0.9.3.jar:0.9.3]
>> at backtype.storm.daemon.nimbus$_launch.invoke(nimbus.clj:1184)
>> [storm-core-0.9.3.jar:0.9.3]
>> at backtype.storm.daemon.nimbus$_main.invoke(nimbus.clj:1206)
>> [storm-core-0.9.3.jar:0.9.3]
>> at clojure.lang.AFn.applyToHelper(AFn.java:159) [clojure-1.5.1.jar:na]
>> at clojure.lang.AFn.applyTo(AFn.java:151) [clojure-1.5.1.jar:na]
>> at backtype.storm.daemon.nimbus.main(Unknown Source)
>> [storm-core-0.9.3.jar:0.9.3]
>>
>>
>> How should I package my scheduler and where exactly should I put it?
>> At the moment what I have done is package my CameraScheduler.class in
>> CameraScheduler.jar and add it to my $STORM_HOME/lib. But apparently
>> this is wrong... Any help?
>>
>
>

Re: custom scheduler ClassNotFoundException

Posted by "Matthias J. Sax" <mj...@informatik.hu-berlin.de>.
Put our Scheduler into a jar and put the jar into the lib folder of your
Storm installation (eg, /opt/storm-0.9.3/lib).

-Matthias


On 05/28/2015 12:40 PM, Franca van Kaam wrote:
> As indicated in the tutorial I put this in the storm.yaml file of the
> nimbus node:
>  |storm.scheduler: ||"storm.CameraScheduler"|
> 
> So my problem is that when I want to start the Nimbus, it gives me this
> ClassNotFoundException. I am not even submitting the topology yet...
> 
> 
> |
> |
> |
> |
> 
> On Thu, May 28, 2015 at 12:35 PM, Franca van Kaam
> <franca.vankaam@gmail.com <ma...@gmail.com>> wrote:
> 
>     But don't you have to start up nimbus before submitting your topology?
> 
>     On Thu, May 28, 2015 at 12:24 PM, Ken Danniswara <kend@kth.se
>     <ma...@kth.se>> wrote:
> 
>         Hi,
> 
>         In my case I'm putting the custom scheduler in the same jar with
>         the submitted topology. I don't know if this is actually the
>         best practice or not, but it works for me.
> 
>         On Thu, May 28, 2015 at 12:10 PM, Franca van Kaam
>         <franca.vankaam@gmail.com <ma...@gmail.com>> wrote:
> 
>             Hello,
> 
>             I am trying to implement a custom scheduler as explained
>             in http://xumingming.sinaapp.com/885/twitter-storm-how-to-develop-a-pluggable-scheduler/
>             .
> 
>             However I seem to do something wrong in the last step of the
>             tutorial, because when I try to launch nimbus I get a
>             ClassNotFoundException.
> 
>             2015-05-28T11:39:24.499+0200 b.s.d.nimbus [INFO] Using
>             custom scheduler: storm.CameraScheduler
>             2015-05-28T11:39:24.514+0200 b.s.d.nimbus [ERROR] Error on
>             initialization of server service-handler
>             java.lang.ClassNotFoundException: storm.CameraScheduler
>             at java.net.URLClassLoader$1.run(URLClassLoader.java:372)
>             ~[na:1.8.0_31]
>             at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
>             ~[na:1.8.0_31]
>             at java.security.AccessController.doPrivileged(Native
>             Method) ~[na:1.8.0_31]
>             at
>             java.net.URLClassLoader.findClass(URLClassLoader.java:360)
>             ~[na:1.8.0_31]
>             at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
>             ~[na:1.8.0_31]
>             at
>             sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) ~[na:1.8.0_31]
>             at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
>             ~[na:1.8.0_31]
>             at java.lang.Class.forName0(Native Method) ~[na:1.8.0_31]
>             at java.lang.Class.forName(Class.java:260) ~[na:1.8.0_31]
>             at backtype.storm.util$new_instance.invoke(util.clj:946)
>             ~[storm-core-0.9.3.jar:0.9.3]
>             at
>             backtype.storm.daemon.nimbus$mk_scheduler.invoke(nimbus.clj:53)
>             ~[storm-core-0.9.3.jar:0.9.3]
>             at
>             backtype.storm.daemon.nimbus$nimbus_data.invoke(nimbus.clj:78)
>             ~[storm-core-0.9.3.jar:0.9.3]
>             at
>             backtype.storm.daemon.nimbus$fn__5043$exec_fn__1108__auto____5044.invoke(nimbus.clj:898)
>             ~[storm-core-0.9.3.jar:0.9.3]
>             at clojure.lang.AFn.applyToHelper(AFn.java:163)
>             [clojure-1.5.1.jar:na]
>             at clojure.lang.AFn.applyTo(AFn.java:151) [clojure-1.5.1.jar:na]
>             at clojure.core$apply.invoke(core.clj:617)
>             ~[clojure-1.5.1.jar:na]
>             at
>             backtype.storm.daemon.nimbus$fn__5043$service_handler__5133.doInvoke(nimbus.clj:895)
>             [storm-core-0.9.3.jar:0.9.3]
>             at clojure.lang.RestFn.invoke(RestFn.java:421)
>             [clojure-1.5.1.jar:na]
>             at
>             backtype.storm.daemon.nimbus$launch_server_BANG_.invoke(nimbus.clj:1152)
>             [storm-core-0.9.3.jar:0.9.3]
>             at
>             backtype.storm.daemon.nimbus$_launch.invoke(nimbus.clj:1184)
>             [storm-core-0.9.3.jar:0.9.3]
>             at
>             backtype.storm.daemon.nimbus$_main.invoke(nimbus.clj:1206)
>             [storm-core-0.9.3.jar:0.9.3]
>             at clojure.lang.AFn.applyToHelper(AFn.java:159)
>             [clojure-1.5.1.jar:na]
>             at clojure.lang.AFn.applyTo(AFn.java:151) [clojure-1.5.1.jar:na]
>             at backtype.storm.daemon.nimbus.main(Unknown Source)
>             [storm-core-0.9.3.jar:0.9.3]
>             2015-05-28T11:39:24.518+0200 b.s.util [ERROR] Halting
>             process: ("Error on initialization")
>             java.lang.RuntimeException: ("Error on initialization")
>             at
>             backtype.storm.util$exit_process_BANG_.doInvoke(util.clj:325) [storm-core-0.9.3.jar:0.9.3]
>             at clojure.lang.RestFn.invoke(RestFn.java:423)
>             [clojure-1.5.1.jar:na]
>             at
>             backtype.storm.daemon.nimbus$fn__5043$service_handler__5133.doInvoke(nimbus.clj:895)
>             [storm-core-0.9.3.jar:0.9.3]
>             at clojure.lang.RestFn.invoke(RestFn.java:421)
>             [clojure-1.5.1.jar:na]
>             at
>             backtype.storm.daemon.nimbus$launch_server_BANG_.invoke(nimbus.clj:1152)
>             [storm-core-0.9.3.jar:0.9.3]
>             at
>             backtype.storm.daemon.nimbus$_launch.invoke(nimbus.clj:1184)
>             [storm-core-0.9.3.jar:0.9.3]
>             at
>             backtype.storm.daemon.nimbus$_main.invoke(nimbus.clj:1206)
>             [storm-core-0.9.3.jar:0.9.3]
>             at clojure.lang.AFn.applyToHelper(AFn.java:159)
>             [clojure-1.5.1.jar:na]
>             at clojure.lang.AFn.applyTo(AFn.java:151) [clojure-1.5.1.jar:na]
>             at backtype.storm.daemon.nimbus.main(Unknown Source)
>             [storm-core-0.9.3.jar:0.9.3]
> 
> 
>             How should I package my scheduler and where exactly should I
>             put it?
>             At the moment what I have done is package my
>             CameraScheduler.class in CameraScheduler.jar and add it to
>             my $STORM_HOME/lib. But apparently this is wrong... Any help?
> 
> 
> 
> 


Re: custom scheduler ClassNotFoundException

Posted by "Matthias J. Sax" <mj...@informatik.hu-berlin.de>.
Hi,

you build the jar in the wrong way:
  2) You need to package the class file, not the source file
  2) "CameraScheduler" in in package "storm". Thus
"CameraScheulder.class" must in in directory "storm" within the jar

The correct command would be:
  jar cvf CameraScheduler.jar storm/CameraScheulder.class

-Matthias


On 05/28/2015 03:25 PM, Franca van Kaam wrote:
> jar cvf CameraScheduler.jar CameraScheduler.java


Re: custom scheduler ClassNotFoundException

Posted by Franca van Kaam <fr...@gmail.com>.
I don't know how to handle this anymore...
In the nimbus log file I have a clear reference to storm.CameraScheduler:
"2015-05-28T11:39:24.499+0200 b.s.d.nimbus [INFO] Using custom scheduler:
storm.CameraScheduler
2015-05-28T11:39:24.514+0200 b.s.d.nimbus [ERROR] Error on initialization
of server service-handler
java.lang.ClassNotFoundException: storm.CameraScheduler
at java.net.URLClassLoader$1.run(URLClassLoader.java:372) ~[na:1.8.0_31]
at java.net.URLClassLoader$1.run(URLClassLoader.java:361) ~[na:1.8.0_31]
at java.security.AccessController.doPrivileged(Native Method) ~[na:1.8.0_31]
at java.net.URLClassLoader.findClass(URLClassLoader.java:360) ~[na:1.8.0_31]
at java.lang.ClassLoader.loadClass(ClassLoader.java:424) ~[na:1.8.0_31]
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
~[na:1.8.0_31]
at java.lang.ClassLoader.loadClass(ClassLoader.java:357) ~[na:1.8.0_31]
at java.lang.Class.forName0(Native Method) ~[na:1.8.0_31]
at java.lang.Class.forName(Class.java:260) ~[na:1.8.0_31]
at backtype.storm.util$new_instance.invoke(util.clj:946)
~[storm-core-0.9.3.jar:0.9.3]
at backtype.storm.daemon.nimbus$mk_scheduler.invoke(nimbus.clj:53)
~[storm-core-0.9.3.jar:0.9.3]
at backtype.storm.daemon.nimbus$nimbus_data.invoke(nimbus.clj:78)
~[storm-core-0.9.3.jar:0.9.3]
at
backtype.storm.daemon.nimbus$fn__5043$exec_fn__1108__auto____5044.invoke(nimbus.clj:898)
~[storm-core-0.9.3.jar:0.9.3]
at clojure.lang.AFn.applyToHelper(AFn.java:163) [clojure-1.5.1.jar:na]
at clojure.lang.AFn.applyTo(AFn.java:151) [clojure-1.5.1.jar:na]
at clojure.core$apply.invoke(core.clj:617) ~[clojure-1.5.1.jar:na]
at
backtype.storm.daemon.nimbus$fn__5043$service_handler__5133.doInvoke(nimbus.clj:895)
[storm-core-0.9.3.jar:0.9.3]
at clojure.lang.RestFn.invoke(RestFn.java:421) [clojure-1.5.1.jar:na]
at backtype.storm.daemon.nimbus$launch_server_BANG_.invoke(nimbus.clj:1152)
[storm-core-0.9.3.jar:0.9.3]
at backtype.storm.daemon.nimbus$_launch.invoke(nimbus.clj:1184)
[storm-core-0.9.3.jar:0.9.3]
at backtype.storm.daemon.nimbus$_main.invoke(nimbus.clj:1206)
[storm-core-0.9.3.jar:0.9.3]
at clojure.lang.AFn.applyToHelper(AFn.java:159) [clojure-1.5.1.jar:na]
at clojure.lang.AFn.applyTo(AFn.java:151) [clojure-1.5.1.jar:na]
at backtype.storm.daemon.nimbus.main(Unknown Source)
[storm-core-0.9.3.jar:0.9.3]"

But apparently it never finds my jar... How can I make sure that the jar is
loaded when starting nimbus?

On Thu, May 28, 2015 at 1:08 PM, Franca van Kaam <fr...@gmail.com>
wrote:

> So to give some more detail...
> I have a CameraScheduler.class, the package in this class is package storm;
>
> I made a jar containing this class file with this command:
> jar cvf CameraScheduler.jar CameraScheduler.java
>
> And then I placed this jar in the $(STORM-HOME)/lib directory.
>
> I put the next line in the storm.yaml of the node running Nimbus:
> storm.scheduler: "storm.CameraScheduler"
>
> Should I be calling it differently in the storm.yaml file?
> And how can I be sure the jar is loaded?
>
> On Thu, May 28, 2015 at 1:04 PM, Ken Danniswara <ke...@kth.se> wrote:
>
>> Yes you're right. Maybe make sure the jar is loaded when starting Nimbus
>> and the package name is correct.
>>
>> On Thu, May 28, 2015 at 12:40 PM, Franca van Kaam <
>> franca.vankaam@gmail.com> wrote:
>>
>>> As indicated in the tutorial I put this in the storm.yaml file of the
>>> nimbus node:
>>>  storm.scheduler: "storm.CameraScheduler"
>>>
>>> So my problem is that when I want to start the Nimbus, it gives me this
>>> ClassNotFoundException. I am not even submitting the topology yet...
>>>
>>>
>>>
>>>
>>>
>>> On Thu, May 28, 2015 at 12:35 PM, Franca van Kaam <
>>> franca.vankaam@gmail.com> wrote:
>>>
>>>> But don't you have to start up nimbus before submitting your topology?
>>>>
>>>> On Thu, May 28, 2015 at 12:24 PM, Ken Danniswara <ke...@kth.se> wrote:
>>>>
>>>>> Hi,
>>>>>
>>>>> In my case I'm putting the custom scheduler in the same jar with the
>>>>> submitted topology. I don't know if this is actually the best practice or
>>>>> not, but it works for me.
>>>>>
>>>>> On Thu, May 28, 2015 at 12:10 PM, Franca van Kaam <
>>>>> franca.vankaam@gmail.com> wrote:
>>>>>
>>>>>> Hello,
>>>>>>
>>>>>> I am trying to implement a custom scheduler as explained in
>>>>>> http://xumingming.sinaapp.com/885/twitter-storm-how-to-develop-a-pluggable-scheduler/
>>>>>> .
>>>>>>
>>>>>> However I seem to do something wrong in the last step of the
>>>>>> tutorial, because when I try to launch nimbus I get a
>>>>>> ClassNotFoundException.
>>>>>>
>>>>>> 2015-05-28T11:39:24.499+0200 b.s.d.nimbus [INFO] Using custom
>>>>>> scheduler: storm.CameraScheduler
>>>>>> 2015-05-28T11:39:24.514+0200 b.s.d.nimbus [ERROR] Error on
>>>>>> initialization of server service-handler
>>>>>> java.lang.ClassNotFoundException: storm.CameraScheduler
>>>>>> at java.net.URLClassLoader$1.run(URLClassLoader.java:372)
>>>>>> ~[na:1.8.0_31]
>>>>>> at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
>>>>>> ~[na:1.8.0_31]
>>>>>> at java.security.AccessController.doPrivileged(Native Method)
>>>>>> ~[na:1.8.0_31]
>>>>>> at java.net.URLClassLoader.findClass(URLClassLoader.java:360)
>>>>>> ~[na:1.8.0_31]
>>>>>> at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
>>>>>> ~[na:1.8.0_31]
>>>>>> at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
>>>>>> ~[na:1.8.0_31]
>>>>>> at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
>>>>>> ~[na:1.8.0_31]
>>>>>> at java.lang.Class.forName0(Native Method) ~[na:1.8.0_31]
>>>>>> at java.lang.Class.forName(Class.java:260) ~[na:1.8.0_31]
>>>>>> at backtype.storm.util$new_instance.invoke(util.clj:946)
>>>>>> ~[storm-core-0.9.3.jar:0.9.3]
>>>>>> at backtype.storm.daemon.nimbus$mk_scheduler.invoke(nimbus.clj:53)
>>>>>> ~[storm-core-0.9.3.jar:0.9.3]
>>>>>> at backtype.storm.daemon.nimbus$nimbus_data.invoke(nimbus.clj:78)
>>>>>> ~[storm-core-0.9.3.jar:0.9.3]
>>>>>> at
>>>>>> backtype.storm.daemon.nimbus$fn__5043$exec_fn__1108__auto____5044.invoke(nimbus.clj:898)
>>>>>> ~[storm-core-0.9.3.jar:0.9.3]
>>>>>> at clojure.lang.AFn.applyToHelper(AFn.java:163) [clojure-1.5.1.jar:na]
>>>>>> at clojure.lang.AFn.applyTo(AFn.java:151) [clojure-1.5.1.jar:na]
>>>>>> at clojure.core$apply.invoke(core.clj:617) ~[clojure-1.5.1.jar:na]
>>>>>> at
>>>>>> backtype.storm.daemon.nimbus$fn__5043$service_handler__5133.doInvoke(nimbus.clj:895)
>>>>>> [storm-core-0.9.3.jar:0.9.3]
>>>>>> at clojure.lang.RestFn.invoke(RestFn.java:421) [clojure-1.5.1.jar:na]
>>>>>> at
>>>>>> backtype.storm.daemon.nimbus$launch_server_BANG_.invoke(nimbus.clj:1152)
>>>>>> [storm-core-0.9.3.jar:0.9.3]
>>>>>> at backtype.storm.daemon.nimbus$_launch.invoke(nimbus.clj:1184)
>>>>>> [storm-core-0.9.3.jar:0.9.3]
>>>>>> at backtype.storm.daemon.nimbus$_main.invoke(nimbus.clj:1206)
>>>>>> [storm-core-0.9.3.jar:0.9.3]
>>>>>> at clojure.lang.AFn.applyToHelper(AFn.java:159) [clojure-1.5.1.jar:na]
>>>>>> at clojure.lang.AFn.applyTo(AFn.java:151) [clojure-1.5.1.jar:na]
>>>>>> at backtype.storm.daemon.nimbus.main(Unknown Source)
>>>>>> [storm-core-0.9.3.jar:0.9.3]
>>>>>> 2015-05-28T11:39:24.518+0200 b.s.util [ERROR] Halting process:
>>>>>> ("Error on initialization")
>>>>>> java.lang.RuntimeException: ("Error on initialization")
>>>>>> at backtype.storm.util$exit_process_BANG_.doInvoke(util.clj:325)
>>>>>> [storm-core-0.9.3.jar:0.9.3]
>>>>>> at clojure.lang.RestFn.invoke(RestFn.java:423) [clojure-1.5.1.jar:na]
>>>>>> at
>>>>>> backtype.storm.daemon.nimbus$fn__5043$service_handler__5133.doInvoke(nimbus.clj:895)
>>>>>> [storm-core-0.9.3.jar:0.9.3]
>>>>>> at clojure.lang.RestFn.invoke(RestFn.java:421) [clojure-1.5.1.jar:na]
>>>>>> at
>>>>>> backtype.storm.daemon.nimbus$launch_server_BANG_.invoke(nimbus.clj:1152)
>>>>>> [storm-core-0.9.3.jar:0.9.3]
>>>>>> at backtype.storm.daemon.nimbus$_launch.invoke(nimbus.clj:1184)
>>>>>> [storm-core-0.9.3.jar:0.9.3]
>>>>>> at backtype.storm.daemon.nimbus$_main.invoke(nimbus.clj:1206)
>>>>>> [storm-core-0.9.3.jar:0.9.3]
>>>>>> at clojure.lang.AFn.applyToHelper(AFn.java:159) [clojure-1.5.1.jar:na]
>>>>>> at clojure.lang.AFn.applyTo(AFn.java:151) [clojure-1.5.1.jar:na]
>>>>>> at backtype.storm.daemon.nimbus.main(Unknown Source)
>>>>>> [storm-core-0.9.3.jar:0.9.3]
>>>>>>
>>>>>>
>>>>>> How should I package my scheduler and where exactly should I put it?
>>>>>> At the moment what I have done is package my CameraScheduler.class in
>>>>>> CameraScheduler.jar and add it to my $STORM_HOME/lib. But apparently
>>>>>> this is wrong... Any help?
>>>>>>
>>>>>
>>>>>
>>>>
>>>
>>
>

Re: custom scheduler ClassNotFoundException

Posted by Franca van Kaam <fr...@gmail.com>.
So to give some more detail...
I have a CameraScheduler.class, the package in this class is package storm;

I made a jar containing this class file with this command:
jar cvf CameraScheduler.jar CameraScheduler.java

And then I placed this jar in the $(STORM-HOME)/lib directory.

I put the next line in the storm.yaml of the node running Nimbus:
storm.scheduler: "storm.CameraScheduler"

Should I be calling it differently in the storm.yaml file?
And how can I be sure the jar is loaded?

On Thu, May 28, 2015 at 1:04 PM, Ken Danniswara <ke...@kth.se> wrote:

> Yes you're right. Maybe make sure the jar is loaded when starting Nimbus
> and the package name is correct.
>
> On Thu, May 28, 2015 at 12:40 PM, Franca van Kaam <
> franca.vankaam@gmail.com> wrote:
>
>> As indicated in the tutorial I put this in the storm.yaml file of the
>> nimbus node:
>>  storm.scheduler: "storm.CameraScheduler"
>>
>> So my problem is that when I want to start the Nimbus, it gives me this
>> ClassNotFoundException. I am not even submitting the topology yet...
>>
>>
>>
>>
>>
>> On Thu, May 28, 2015 at 12:35 PM, Franca van Kaam <
>> franca.vankaam@gmail.com> wrote:
>>
>>> But don't you have to start up nimbus before submitting your topology?
>>>
>>> On Thu, May 28, 2015 at 12:24 PM, Ken Danniswara <ke...@kth.se> wrote:
>>>
>>>> Hi,
>>>>
>>>> In my case I'm putting the custom scheduler in the same jar with the
>>>> submitted topology. I don't know if this is actually the best practice or
>>>> not, but it works for me.
>>>>
>>>> On Thu, May 28, 2015 at 12:10 PM, Franca van Kaam <
>>>> franca.vankaam@gmail.com> wrote:
>>>>
>>>>> Hello,
>>>>>
>>>>> I am trying to implement a custom scheduler as explained in
>>>>> http://xumingming.sinaapp.com/885/twitter-storm-how-to-develop-a-pluggable-scheduler/
>>>>> .
>>>>>
>>>>> However I seem to do something wrong in the last step of the tutorial,
>>>>> because when I try to launch nimbus I get a ClassNotFoundException.
>>>>>
>>>>> 2015-05-28T11:39:24.499+0200 b.s.d.nimbus [INFO] Using custom
>>>>> scheduler: storm.CameraScheduler
>>>>> 2015-05-28T11:39:24.514+0200 b.s.d.nimbus [ERROR] Error on
>>>>> initialization of server service-handler
>>>>> java.lang.ClassNotFoundException: storm.CameraScheduler
>>>>> at java.net.URLClassLoader$1.run(URLClassLoader.java:372)
>>>>> ~[na:1.8.0_31]
>>>>> at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
>>>>> ~[na:1.8.0_31]
>>>>> at java.security.AccessController.doPrivileged(Native Method)
>>>>> ~[na:1.8.0_31]
>>>>> at java.net.URLClassLoader.findClass(URLClassLoader.java:360)
>>>>> ~[na:1.8.0_31]
>>>>> at java.lang.ClassLoader.loadClass(ClassLoader.java:424) ~[na:1.8.0_31]
>>>>> at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
>>>>> ~[na:1.8.0_31]
>>>>> at java.lang.ClassLoader.loadClass(ClassLoader.java:357) ~[na:1.8.0_31]
>>>>> at java.lang.Class.forName0(Native Method) ~[na:1.8.0_31]
>>>>> at java.lang.Class.forName(Class.java:260) ~[na:1.8.0_31]
>>>>> at backtype.storm.util$new_instance.invoke(util.clj:946)
>>>>> ~[storm-core-0.9.3.jar:0.9.3]
>>>>> at backtype.storm.daemon.nimbus$mk_scheduler.invoke(nimbus.clj:53)
>>>>> ~[storm-core-0.9.3.jar:0.9.3]
>>>>> at backtype.storm.daemon.nimbus$nimbus_data.invoke(nimbus.clj:78)
>>>>> ~[storm-core-0.9.3.jar:0.9.3]
>>>>> at
>>>>> backtype.storm.daemon.nimbus$fn__5043$exec_fn__1108__auto____5044.invoke(nimbus.clj:898)
>>>>> ~[storm-core-0.9.3.jar:0.9.3]
>>>>> at clojure.lang.AFn.applyToHelper(AFn.java:163) [clojure-1.5.1.jar:na]
>>>>> at clojure.lang.AFn.applyTo(AFn.java:151) [clojure-1.5.1.jar:na]
>>>>> at clojure.core$apply.invoke(core.clj:617) ~[clojure-1.5.1.jar:na]
>>>>> at
>>>>> backtype.storm.daemon.nimbus$fn__5043$service_handler__5133.doInvoke(nimbus.clj:895)
>>>>> [storm-core-0.9.3.jar:0.9.3]
>>>>> at clojure.lang.RestFn.invoke(RestFn.java:421) [clojure-1.5.1.jar:na]
>>>>> at
>>>>> backtype.storm.daemon.nimbus$launch_server_BANG_.invoke(nimbus.clj:1152)
>>>>> [storm-core-0.9.3.jar:0.9.3]
>>>>> at backtype.storm.daemon.nimbus$_launch.invoke(nimbus.clj:1184)
>>>>> [storm-core-0.9.3.jar:0.9.3]
>>>>> at backtype.storm.daemon.nimbus$_main.invoke(nimbus.clj:1206)
>>>>> [storm-core-0.9.3.jar:0.9.3]
>>>>> at clojure.lang.AFn.applyToHelper(AFn.java:159) [clojure-1.5.1.jar:na]
>>>>> at clojure.lang.AFn.applyTo(AFn.java:151) [clojure-1.5.1.jar:na]
>>>>> at backtype.storm.daemon.nimbus.main(Unknown Source)
>>>>> [storm-core-0.9.3.jar:0.9.3]
>>>>> 2015-05-28T11:39:24.518+0200 b.s.util [ERROR] Halting process: ("Error
>>>>> on initialization")
>>>>> java.lang.RuntimeException: ("Error on initialization")
>>>>> at backtype.storm.util$exit_process_BANG_.doInvoke(util.clj:325)
>>>>> [storm-core-0.9.3.jar:0.9.3]
>>>>> at clojure.lang.RestFn.invoke(RestFn.java:423) [clojure-1.5.1.jar:na]
>>>>> at
>>>>> backtype.storm.daemon.nimbus$fn__5043$service_handler__5133.doInvoke(nimbus.clj:895)
>>>>> [storm-core-0.9.3.jar:0.9.3]
>>>>> at clojure.lang.RestFn.invoke(RestFn.java:421) [clojure-1.5.1.jar:na]
>>>>> at
>>>>> backtype.storm.daemon.nimbus$launch_server_BANG_.invoke(nimbus.clj:1152)
>>>>> [storm-core-0.9.3.jar:0.9.3]
>>>>> at backtype.storm.daemon.nimbus$_launch.invoke(nimbus.clj:1184)
>>>>> [storm-core-0.9.3.jar:0.9.3]
>>>>> at backtype.storm.daemon.nimbus$_main.invoke(nimbus.clj:1206)
>>>>> [storm-core-0.9.3.jar:0.9.3]
>>>>> at clojure.lang.AFn.applyToHelper(AFn.java:159) [clojure-1.5.1.jar:na]
>>>>> at clojure.lang.AFn.applyTo(AFn.java:151) [clojure-1.5.1.jar:na]
>>>>> at backtype.storm.daemon.nimbus.main(Unknown Source)
>>>>> [storm-core-0.9.3.jar:0.9.3]
>>>>>
>>>>>
>>>>> How should I package my scheduler and where exactly should I put it?
>>>>> At the moment what I have done is package my CameraScheduler.class in
>>>>> CameraScheduler.jar and add it to my $STORM_HOME/lib. But apparently
>>>>> this is wrong... Any help?
>>>>>
>>>>
>>>>
>>>
>>
>

Re: custom scheduler ClassNotFoundException

Posted by Ken Danniswara <ke...@kth.se>.
Yes you're right. Maybe make sure the jar is loaded when starting Nimbus
and the package name is correct.

On Thu, May 28, 2015 at 12:40 PM, Franca van Kaam <fr...@gmail.com>
wrote:

> As indicated in the tutorial I put this in the storm.yaml file of the
> nimbus node:
>  storm.scheduler: "storm.CameraScheduler"
>
> So my problem is that when I want to start the Nimbus, it gives me this
> ClassNotFoundException. I am not even submitting the topology yet...
>
>
>
>
>
> On Thu, May 28, 2015 at 12:35 PM, Franca van Kaam <
> franca.vankaam@gmail.com> wrote:
>
>> But don't you have to start up nimbus before submitting your topology?
>>
>> On Thu, May 28, 2015 at 12:24 PM, Ken Danniswara <ke...@kth.se> wrote:
>>
>>> Hi,
>>>
>>> In my case I'm putting the custom scheduler in the same jar with the
>>> submitted topology. I don't know if this is actually the best practice or
>>> not, but it works for me.
>>>
>>> On Thu, May 28, 2015 at 12:10 PM, Franca van Kaam <
>>> franca.vankaam@gmail.com> wrote:
>>>
>>>> Hello,
>>>>
>>>> I am trying to implement a custom scheduler as explained in
>>>> http://xumingming.sinaapp.com/885/twitter-storm-how-to-develop-a-pluggable-scheduler/
>>>> .
>>>>
>>>> However I seem to do something wrong in the last step of the tutorial,
>>>> because when I try to launch nimbus I get a ClassNotFoundException.
>>>>
>>>> 2015-05-28T11:39:24.499+0200 b.s.d.nimbus [INFO] Using custom
>>>> scheduler: storm.CameraScheduler
>>>> 2015-05-28T11:39:24.514+0200 b.s.d.nimbus [ERROR] Error on
>>>> initialization of server service-handler
>>>> java.lang.ClassNotFoundException: storm.CameraScheduler
>>>> at java.net.URLClassLoader$1.run(URLClassLoader.java:372) ~[na:1.8.0_31]
>>>> at java.net.URLClassLoader$1.run(URLClassLoader.java:361) ~[na:1.8.0_31]
>>>> at java.security.AccessController.doPrivileged(Native Method)
>>>> ~[na:1.8.0_31]
>>>> at java.net.URLClassLoader.findClass(URLClassLoader.java:360)
>>>> ~[na:1.8.0_31]
>>>> at java.lang.ClassLoader.loadClass(ClassLoader.java:424) ~[na:1.8.0_31]
>>>> at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
>>>> ~[na:1.8.0_31]
>>>> at java.lang.ClassLoader.loadClass(ClassLoader.java:357) ~[na:1.8.0_31]
>>>> at java.lang.Class.forName0(Native Method) ~[na:1.8.0_31]
>>>> at java.lang.Class.forName(Class.java:260) ~[na:1.8.0_31]
>>>> at backtype.storm.util$new_instance.invoke(util.clj:946)
>>>> ~[storm-core-0.9.3.jar:0.9.3]
>>>> at backtype.storm.daemon.nimbus$mk_scheduler.invoke(nimbus.clj:53)
>>>> ~[storm-core-0.9.3.jar:0.9.3]
>>>> at backtype.storm.daemon.nimbus$nimbus_data.invoke(nimbus.clj:78)
>>>> ~[storm-core-0.9.3.jar:0.9.3]
>>>> at
>>>> backtype.storm.daemon.nimbus$fn__5043$exec_fn__1108__auto____5044.invoke(nimbus.clj:898)
>>>> ~[storm-core-0.9.3.jar:0.9.3]
>>>> at clojure.lang.AFn.applyToHelper(AFn.java:163) [clojure-1.5.1.jar:na]
>>>> at clojure.lang.AFn.applyTo(AFn.java:151) [clojure-1.5.1.jar:na]
>>>> at clojure.core$apply.invoke(core.clj:617) ~[clojure-1.5.1.jar:na]
>>>> at
>>>> backtype.storm.daemon.nimbus$fn__5043$service_handler__5133.doInvoke(nimbus.clj:895)
>>>> [storm-core-0.9.3.jar:0.9.3]
>>>> at clojure.lang.RestFn.invoke(RestFn.java:421) [clojure-1.5.1.jar:na]
>>>> at
>>>> backtype.storm.daemon.nimbus$launch_server_BANG_.invoke(nimbus.clj:1152)
>>>> [storm-core-0.9.3.jar:0.9.3]
>>>> at backtype.storm.daemon.nimbus$_launch.invoke(nimbus.clj:1184)
>>>> [storm-core-0.9.3.jar:0.9.3]
>>>> at backtype.storm.daemon.nimbus$_main.invoke(nimbus.clj:1206)
>>>> [storm-core-0.9.3.jar:0.9.3]
>>>> at clojure.lang.AFn.applyToHelper(AFn.java:159) [clojure-1.5.1.jar:na]
>>>> at clojure.lang.AFn.applyTo(AFn.java:151) [clojure-1.5.1.jar:na]
>>>> at backtype.storm.daemon.nimbus.main(Unknown Source)
>>>> [storm-core-0.9.3.jar:0.9.3]
>>>> 2015-05-28T11:39:24.518+0200 b.s.util [ERROR] Halting process: ("Error
>>>> on initialization")
>>>> java.lang.RuntimeException: ("Error on initialization")
>>>> at backtype.storm.util$exit_process_BANG_.doInvoke(util.clj:325)
>>>> [storm-core-0.9.3.jar:0.9.3]
>>>> at clojure.lang.RestFn.invoke(RestFn.java:423) [clojure-1.5.1.jar:na]
>>>> at
>>>> backtype.storm.daemon.nimbus$fn__5043$service_handler__5133.doInvoke(nimbus.clj:895)
>>>> [storm-core-0.9.3.jar:0.9.3]
>>>> at clojure.lang.RestFn.invoke(RestFn.java:421) [clojure-1.5.1.jar:na]
>>>> at
>>>> backtype.storm.daemon.nimbus$launch_server_BANG_.invoke(nimbus.clj:1152)
>>>> [storm-core-0.9.3.jar:0.9.3]
>>>> at backtype.storm.daemon.nimbus$_launch.invoke(nimbus.clj:1184)
>>>> [storm-core-0.9.3.jar:0.9.3]
>>>> at backtype.storm.daemon.nimbus$_main.invoke(nimbus.clj:1206)
>>>> [storm-core-0.9.3.jar:0.9.3]
>>>> at clojure.lang.AFn.applyToHelper(AFn.java:159) [clojure-1.5.1.jar:na]
>>>> at clojure.lang.AFn.applyTo(AFn.java:151) [clojure-1.5.1.jar:na]
>>>> at backtype.storm.daemon.nimbus.main(Unknown Source)
>>>> [storm-core-0.9.3.jar:0.9.3]
>>>>
>>>>
>>>> How should I package my scheduler and where exactly should I put it?
>>>> At the moment what I have done is package my CameraScheduler.class in
>>>> CameraScheduler.jar and add it to my $STORM_HOME/lib. But apparently
>>>> this is wrong... Any help?
>>>>
>>>
>>>
>>
>

Re: custom scheduler ClassNotFoundException

Posted by Franca van Kaam <fr...@gmail.com>.
As indicated in the tutorial I put this in the storm.yaml file of the
nimbus node:
 storm.scheduler: "storm.CameraScheduler"

So my problem is that when I want to start the Nimbus, it gives me this
ClassNotFoundException. I am not even submitting the topology yet...





On Thu, May 28, 2015 at 12:35 PM, Franca van Kaam <fr...@gmail.com>
wrote:

> But don't you have to start up nimbus before submitting your topology?
>
> On Thu, May 28, 2015 at 12:24 PM, Ken Danniswara <ke...@kth.se> wrote:
>
>> Hi,
>>
>> In my case I'm putting the custom scheduler in the same jar with the
>> submitted topology. I don't know if this is actually the best practice or
>> not, but it works for me.
>>
>> On Thu, May 28, 2015 at 12:10 PM, Franca van Kaam <
>> franca.vankaam@gmail.com> wrote:
>>
>>> Hello,
>>>
>>> I am trying to implement a custom scheduler as explained in
>>> http://xumingming.sinaapp.com/885/twitter-storm-how-to-develop-a-pluggable-scheduler/
>>> .
>>>
>>> However I seem to do something wrong in the last step of the tutorial,
>>> because when I try to launch nimbus I get a ClassNotFoundException.
>>>
>>> 2015-05-28T11:39:24.499+0200 b.s.d.nimbus [INFO] Using custom scheduler:
>>> storm.CameraScheduler
>>> 2015-05-28T11:39:24.514+0200 b.s.d.nimbus [ERROR] Error on
>>> initialization of server service-handler
>>> java.lang.ClassNotFoundException: storm.CameraScheduler
>>> at java.net.URLClassLoader$1.run(URLClassLoader.java:372) ~[na:1.8.0_31]
>>> at java.net.URLClassLoader$1.run(URLClassLoader.java:361) ~[na:1.8.0_31]
>>> at java.security.AccessController.doPrivileged(Native Method)
>>> ~[na:1.8.0_31]
>>> at java.net.URLClassLoader.findClass(URLClassLoader.java:360)
>>> ~[na:1.8.0_31]
>>> at java.lang.ClassLoader.loadClass(ClassLoader.java:424) ~[na:1.8.0_31]
>>> at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
>>> ~[na:1.8.0_31]
>>> at java.lang.ClassLoader.loadClass(ClassLoader.java:357) ~[na:1.8.0_31]
>>> at java.lang.Class.forName0(Native Method) ~[na:1.8.0_31]
>>> at java.lang.Class.forName(Class.java:260) ~[na:1.8.0_31]
>>> at backtype.storm.util$new_instance.invoke(util.clj:946)
>>> ~[storm-core-0.9.3.jar:0.9.3]
>>> at backtype.storm.daemon.nimbus$mk_scheduler.invoke(nimbus.clj:53)
>>> ~[storm-core-0.9.3.jar:0.9.3]
>>> at backtype.storm.daemon.nimbus$nimbus_data.invoke(nimbus.clj:78)
>>> ~[storm-core-0.9.3.jar:0.9.3]
>>> at
>>> backtype.storm.daemon.nimbus$fn__5043$exec_fn__1108__auto____5044.invoke(nimbus.clj:898)
>>> ~[storm-core-0.9.3.jar:0.9.3]
>>> at clojure.lang.AFn.applyToHelper(AFn.java:163) [clojure-1.5.1.jar:na]
>>> at clojure.lang.AFn.applyTo(AFn.java:151) [clojure-1.5.1.jar:na]
>>> at clojure.core$apply.invoke(core.clj:617) ~[clojure-1.5.1.jar:na]
>>> at
>>> backtype.storm.daemon.nimbus$fn__5043$service_handler__5133.doInvoke(nimbus.clj:895)
>>> [storm-core-0.9.3.jar:0.9.3]
>>> at clojure.lang.RestFn.invoke(RestFn.java:421) [clojure-1.5.1.jar:na]
>>> at
>>> backtype.storm.daemon.nimbus$launch_server_BANG_.invoke(nimbus.clj:1152)
>>> [storm-core-0.9.3.jar:0.9.3]
>>> at backtype.storm.daemon.nimbus$_launch.invoke(nimbus.clj:1184)
>>> [storm-core-0.9.3.jar:0.9.3]
>>> at backtype.storm.daemon.nimbus$_main.invoke(nimbus.clj:1206)
>>> [storm-core-0.9.3.jar:0.9.3]
>>> at clojure.lang.AFn.applyToHelper(AFn.java:159) [clojure-1.5.1.jar:na]
>>> at clojure.lang.AFn.applyTo(AFn.java:151) [clojure-1.5.1.jar:na]
>>> at backtype.storm.daemon.nimbus.main(Unknown Source)
>>> [storm-core-0.9.3.jar:0.9.3]
>>> 2015-05-28T11:39:24.518+0200 b.s.util [ERROR] Halting process: ("Error
>>> on initialization")
>>> java.lang.RuntimeException: ("Error on initialization")
>>> at backtype.storm.util$exit_process_BANG_.doInvoke(util.clj:325)
>>> [storm-core-0.9.3.jar:0.9.3]
>>> at clojure.lang.RestFn.invoke(RestFn.java:423) [clojure-1.5.1.jar:na]
>>> at
>>> backtype.storm.daemon.nimbus$fn__5043$service_handler__5133.doInvoke(nimbus.clj:895)
>>> [storm-core-0.9.3.jar:0.9.3]
>>> at clojure.lang.RestFn.invoke(RestFn.java:421) [clojure-1.5.1.jar:na]
>>> at
>>> backtype.storm.daemon.nimbus$launch_server_BANG_.invoke(nimbus.clj:1152)
>>> [storm-core-0.9.3.jar:0.9.3]
>>> at backtype.storm.daemon.nimbus$_launch.invoke(nimbus.clj:1184)
>>> [storm-core-0.9.3.jar:0.9.3]
>>> at backtype.storm.daemon.nimbus$_main.invoke(nimbus.clj:1206)
>>> [storm-core-0.9.3.jar:0.9.3]
>>> at clojure.lang.AFn.applyToHelper(AFn.java:159) [clojure-1.5.1.jar:na]
>>> at clojure.lang.AFn.applyTo(AFn.java:151) [clojure-1.5.1.jar:na]
>>> at backtype.storm.daemon.nimbus.main(Unknown Source)
>>> [storm-core-0.9.3.jar:0.9.3]
>>>
>>>
>>> How should I package my scheduler and where exactly should I put it?
>>> At the moment what I have done is package my CameraScheduler.class in
>>> CameraScheduler.jar and add it to my $STORM_HOME/lib. But apparently
>>> this is wrong... Any help?
>>>
>>
>>
>

Re: custom scheduler ClassNotFoundException

Posted by Franca van Kaam <fr...@gmail.com>.
But don't you have to start up nimbus before submitting your topology?

On Thu, May 28, 2015 at 12:24 PM, Ken Danniswara <ke...@kth.se> wrote:

> Hi,
>
> In my case I'm putting the custom scheduler in the same jar with the
> submitted topology. I don't know if this is actually the best practice or
> not, but it works for me.
>
> On Thu, May 28, 2015 at 12:10 PM, Franca van Kaam <
> franca.vankaam@gmail.com> wrote:
>
>> Hello,
>>
>> I am trying to implement a custom scheduler as explained in
>> http://xumingming.sinaapp.com/885/twitter-storm-how-to-develop-a-pluggable-scheduler/
>> .
>>
>> However I seem to do something wrong in the last step of the tutorial,
>> because when I try to launch nimbus I get a ClassNotFoundException.
>>
>> 2015-05-28T11:39:24.499+0200 b.s.d.nimbus [INFO] Using custom scheduler:
>> storm.CameraScheduler
>> 2015-05-28T11:39:24.514+0200 b.s.d.nimbus [ERROR] Error on initialization
>> of server service-handler
>> java.lang.ClassNotFoundException: storm.CameraScheduler
>> at java.net.URLClassLoader$1.run(URLClassLoader.java:372) ~[na:1.8.0_31]
>> at java.net.URLClassLoader$1.run(URLClassLoader.java:361) ~[na:1.8.0_31]
>> at java.security.AccessController.doPrivileged(Native Method)
>> ~[na:1.8.0_31]
>> at java.net.URLClassLoader.findClass(URLClassLoader.java:360)
>> ~[na:1.8.0_31]
>> at java.lang.ClassLoader.loadClass(ClassLoader.java:424) ~[na:1.8.0_31]
>> at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
>> ~[na:1.8.0_31]
>> at java.lang.ClassLoader.loadClass(ClassLoader.java:357) ~[na:1.8.0_31]
>> at java.lang.Class.forName0(Native Method) ~[na:1.8.0_31]
>> at java.lang.Class.forName(Class.java:260) ~[na:1.8.0_31]
>> at backtype.storm.util$new_instance.invoke(util.clj:946)
>> ~[storm-core-0.9.3.jar:0.9.3]
>> at backtype.storm.daemon.nimbus$mk_scheduler.invoke(nimbus.clj:53)
>> ~[storm-core-0.9.3.jar:0.9.3]
>> at backtype.storm.daemon.nimbus$nimbus_data.invoke(nimbus.clj:78)
>> ~[storm-core-0.9.3.jar:0.9.3]
>> at
>> backtype.storm.daemon.nimbus$fn__5043$exec_fn__1108__auto____5044.invoke(nimbus.clj:898)
>> ~[storm-core-0.9.3.jar:0.9.3]
>> at clojure.lang.AFn.applyToHelper(AFn.java:163) [clojure-1.5.1.jar:na]
>> at clojure.lang.AFn.applyTo(AFn.java:151) [clojure-1.5.1.jar:na]
>> at clojure.core$apply.invoke(core.clj:617) ~[clojure-1.5.1.jar:na]
>> at
>> backtype.storm.daemon.nimbus$fn__5043$service_handler__5133.doInvoke(nimbus.clj:895)
>> [storm-core-0.9.3.jar:0.9.3]
>> at clojure.lang.RestFn.invoke(RestFn.java:421) [clojure-1.5.1.jar:na]
>> at
>> backtype.storm.daemon.nimbus$launch_server_BANG_.invoke(nimbus.clj:1152)
>> [storm-core-0.9.3.jar:0.9.3]
>> at backtype.storm.daemon.nimbus$_launch.invoke(nimbus.clj:1184)
>> [storm-core-0.9.3.jar:0.9.3]
>> at backtype.storm.daemon.nimbus$_main.invoke(nimbus.clj:1206)
>> [storm-core-0.9.3.jar:0.9.3]
>> at clojure.lang.AFn.applyToHelper(AFn.java:159) [clojure-1.5.1.jar:na]
>> at clojure.lang.AFn.applyTo(AFn.java:151) [clojure-1.5.1.jar:na]
>> at backtype.storm.daemon.nimbus.main(Unknown Source)
>> [storm-core-0.9.3.jar:0.9.3]
>> 2015-05-28T11:39:24.518+0200 b.s.util [ERROR] Halting process: ("Error on
>> initialization")
>> java.lang.RuntimeException: ("Error on initialization")
>> at backtype.storm.util$exit_process_BANG_.doInvoke(util.clj:325)
>> [storm-core-0.9.3.jar:0.9.3]
>> at clojure.lang.RestFn.invoke(RestFn.java:423) [clojure-1.5.1.jar:na]
>> at
>> backtype.storm.daemon.nimbus$fn__5043$service_handler__5133.doInvoke(nimbus.clj:895)
>> [storm-core-0.9.3.jar:0.9.3]
>> at clojure.lang.RestFn.invoke(RestFn.java:421) [clojure-1.5.1.jar:na]
>> at
>> backtype.storm.daemon.nimbus$launch_server_BANG_.invoke(nimbus.clj:1152)
>> [storm-core-0.9.3.jar:0.9.3]
>> at backtype.storm.daemon.nimbus$_launch.invoke(nimbus.clj:1184)
>> [storm-core-0.9.3.jar:0.9.3]
>> at backtype.storm.daemon.nimbus$_main.invoke(nimbus.clj:1206)
>> [storm-core-0.9.3.jar:0.9.3]
>> at clojure.lang.AFn.applyToHelper(AFn.java:159) [clojure-1.5.1.jar:na]
>> at clojure.lang.AFn.applyTo(AFn.java:151) [clojure-1.5.1.jar:na]
>> at backtype.storm.daemon.nimbus.main(Unknown Source)
>> [storm-core-0.9.3.jar:0.9.3]
>>
>>
>> How should I package my scheduler and where exactly should I put it?
>> At the moment what I have done is package my CameraScheduler.class in
>> CameraScheduler.jar and add it to my $STORM_HOME/lib. But apparently
>> this is wrong... Any help?
>>
>
>

Re: custom scheduler ClassNotFoundException

Posted by Ken Danniswara <ke...@kth.se>.
Hi,

In my case I'm putting the custom scheduler in the same jar with the
submitted topology. I don't know if this is actually the best practice or
not, but it works for me.

On Thu, May 28, 2015 at 12:10 PM, Franca van Kaam <fr...@gmail.com>
wrote:

> Hello,
>
> I am trying to implement a custom scheduler as explained in
> http://xumingming.sinaapp.com/885/twitter-storm-how-to-develop-a-pluggable-scheduler/
> .
>
> However I seem to do something wrong in the last step of the tutorial,
> because when I try to launch nimbus I get a ClassNotFoundException.
>
> 2015-05-28T11:39:24.499+0200 b.s.d.nimbus [INFO] Using custom scheduler:
> storm.CameraScheduler
> 2015-05-28T11:39:24.514+0200 b.s.d.nimbus [ERROR] Error on initialization
> of server service-handler
> java.lang.ClassNotFoundException: storm.CameraScheduler
> at java.net.URLClassLoader$1.run(URLClassLoader.java:372) ~[na:1.8.0_31]
> at java.net.URLClassLoader$1.run(URLClassLoader.java:361) ~[na:1.8.0_31]
> at java.security.AccessController.doPrivileged(Native Method)
> ~[na:1.8.0_31]
> at java.net.URLClassLoader.findClass(URLClassLoader.java:360)
> ~[na:1.8.0_31]
> at java.lang.ClassLoader.loadClass(ClassLoader.java:424) ~[na:1.8.0_31]
> at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
> ~[na:1.8.0_31]
> at java.lang.ClassLoader.loadClass(ClassLoader.java:357) ~[na:1.8.0_31]
> at java.lang.Class.forName0(Native Method) ~[na:1.8.0_31]
> at java.lang.Class.forName(Class.java:260) ~[na:1.8.0_31]
> at backtype.storm.util$new_instance.invoke(util.clj:946)
> ~[storm-core-0.9.3.jar:0.9.3]
> at backtype.storm.daemon.nimbus$mk_scheduler.invoke(nimbus.clj:53)
> ~[storm-core-0.9.3.jar:0.9.3]
> at backtype.storm.daemon.nimbus$nimbus_data.invoke(nimbus.clj:78)
> ~[storm-core-0.9.3.jar:0.9.3]
> at
> backtype.storm.daemon.nimbus$fn__5043$exec_fn__1108__auto____5044.invoke(nimbus.clj:898)
> ~[storm-core-0.9.3.jar:0.9.3]
> at clojure.lang.AFn.applyToHelper(AFn.java:163) [clojure-1.5.1.jar:na]
> at clojure.lang.AFn.applyTo(AFn.java:151) [clojure-1.5.1.jar:na]
> at clojure.core$apply.invoke(core.clj:617) ~[clojure-1.5.1.jar:na]
> at
> backtype.storm.daemon.nimbus$fn__5043$service_handler__5133.doInvoke(nimbus.clj:895)
> [storm-core-0.9.3.jar:0.9.3]
> at clojure.lang.RestFn.invoke(RestFn.java:421) [clojure-1.5.1.jar:na]
> at
> backtype.storm.daemon.nimbus$launch_server_BANG_.invoke(nimbus.clj:1152)
> [storm-core-0.9.3.jar:0.9.3]
> at backtype.storm.daemon.nimbus$_launch.invoke(nimbus.clj:1184)
> [storm-core-0.9.3.jar:0.9.3]
> at backtype.storm.daemon.nimbus$_main.invoke(nimbus.clj:1206)
> [storm-core-0.9.3.jar:0.9.3]
> at clojure.lang.AFn.applyToHelper(AFn.java:159) [clojure-1.5.1.jar:na]
> at clojure.lang.AFn.applyTo(AFn.java:151) [clojure-1.5.1.jar:na]
> at backtype.storm.daemon.nimbus.main(Unknown Source)
> [storm-core-0.9.3.jar:0.9.3]
> 2015-05-28T11:39:24.518+0200 b.s.util [ERROR] Halting process: ("Error on
> initialization")
> java.lang.RuntimeException: ("Error on initialization")
> at backtype.storm.util$exit_process_BANG_.doInvoke(util.clj:325)
> [storm-core-0.9.3.jar:0.9.3]
> at clojure.lang.RestFn.invoke(RestFn.java:423) [clojure-1.5.1.jar:na]
> at
> backtype.storm.daemon.nimbus$fn__5043$service_handler__5133.doInvoke(nimbus.clj:895)
> [storm-core-0.9.3.jar:0.9.3]
> at clojure.lang.RestFn.invoke(RestFn.java:421) [clojure-1.5.1.jar:na]
> at
> backtype.storm.daemon.nimbus$launch_server_BANG_.invoke(nimbus.clj:1152)
> [storm-core-0.9.3.jar:0.9.3]
> at backtype.storm.daemon.nimbus$_launch.invoke(nimbus.clj:1184)
> [storm-core-0.9.3.jar:0.9.3]
> at backtype.storm.daemon.nimbus$_main.invoke(nimbus.clj:1206)
> [storm-core-0.9.3.jar:0.9.3]
> at clojure.lang.AFn.applyToHelper(AFn.java:159) [clojure-1.5.1.jar:na]
> at clojure.lang.AFn.applyTo(AFn.java:151) [clojure-1.5.1.jar:na]
> at backtype.storm.daemon.nimbus.main(Unknown Source)
> [storm-core-0.9.3.jar:0.9.3]
>
>
> How should I package my scheduler and where exactly should I put it?
> At the moment what I have done is package my CameraScheduler.class in
> CameraScheduler.jar and add it to my $STORM_HOME/lib. But apparently this
> is wrong... Any help?
>