风暴主管在处理事件时退出
storm supervisor exits when processing event
当我通过发出 bin/storm supervisor 启动 supervisor 时它退出。日志与
2015-06-12T02:28:27.811-0700 b.s.event [ERROR] Error when processing event
java.lang.NoSuchMethodError: org.apache.commons.io.FileUtils.moveDirectory(Ljava/io/File;Ljava/io/File;)V
at backtype.storm.daemon.supervisor$fn__7480.invoke(supervisor.clj:489) ~[storm-core-0.9.5.jar:0.9.5]
at clojure.lang.MultiFn.invoke(MultiFn.java:241) ~[clojure-1.5.1.jar:na]
at backtype.storm.daemon.supervisor$mk_synchronize_supervisor$this__7400.invoke(supervisor.clj:374) ~[storm-core-0.9.5.jar:0.9.5]
at backtype.storm.event$event_manager$fn__2625.invoke(event.clj:40) ~[storm-core-0.9.5.jar:0.9.5]
at clojure.lang.AFn.run(AFn.java:24) [clojure-1.5.1.jar:na]
at java.lang.Thread.run(Thread.java:745) [na:1.7.0_79]
2015-06-12T02:28:27.834-0700 b.s.util [ERROR] Halting process: ("Error when processing an event")
java.lang.RuntimeException: ("Error when processing an event")
at backtype.storm.util$exit_process_BANG_.doInvoke(util.clj:325) [storm-core-0.9.5.jar:0.9.5]
at clojure.lang.RestFn.invoke(RestFn.java:423) [clojure-1.5.1.jar:na]
at backtype.storm.event$event_manager$fn__2625.invoke(event.clj:48) [storm-core-0.9.5.jar:0.9.5]
at clojure.lang.AFn.run(AFn.java:24) [clojure-1.5.1.jar:na]
at java.lang.Thread.run(Thread.java:745) [na:1.7.0_79]
我的storm.yaml的基本配置是
storm.zookeeper.servers:
- "127.0.0.1"
storm.local.dir: "/mnt/storm"
nimbus.host: "127.0.0.1"
supervisor.slots.ports:
- 6700
在 spout 收到消息之前一切正常。
好像org.apache.commons.io.FileUtilsclass漏掉了。您应该创建一个包含您的代码和代码的所有依赖项的 jar(Storm 除外 - Storm jar 将添加到工作节点上的 class 路径)。请查看更多详细信息,了解如何 运行 远程模式(在集群中)拓扑 link:https://storm.apache.org/documentation/Running-topologies-on-a-production-cluster.html
看起来 Storm 的类路径不包括 Apache commons-io v2.4 或错误的版本。
请检查
bin/storm classpath
确认类路径包含commons-io,其版本为2.4。如果它包含不同的版本,您需要手动检查(通过 javadoc)它包含
public static void moveDirectory(File srcDir, File destDir) throws IOException
你可以参考https://github.com/apache/storm/blob/v0.9.5/bin/storm#L101-L105类路径是如何制作的。
当我通过发出 bin/storm supervisor 启动 supervisor 时它退出。日志与
2015-06-12T02:28:27.811-0700 b.s.event [ERROR] Error when processing event
java.lang.NoSuchMethodError: org.apache.commons.io.FileUtils.moveDirectory(Ljava/io/File;Ljava/io/File;)V
at backtype.storm.daemon.supervisor$fn__7480.invoke(supervisor.clj:489) ~[storm-core-0.9.5.jar:0.9.5]
at clojure.lang.MultiFn.invoke(MultiFn.java:241) ~[clojure-1.5.1.jar:na]
at backtype.storm.daemon.supervisor$mk_synchronize_supervisor$this__7400.invoke(supervisor.clj:374) ~[storm-core-0.9.5.jar:0.9.5]
at backtype.storm.event$event_manager$fn__2625.invoke(event.clj:40) ~[storm-core-0.9.5.jar:0.9.5]
at clojure.lang.AFn.run(AFn.java:24) [clojure-1.5.1.jar:na]
at java.lang.Thread.run(Thread.java:745) [na:1.7.0_79]
2015-06-12T02:28:27.834-0700 b.s.util [ERROR] Halting process: ("Error when processing an event")
java.lang.RuntimeException: ("Error when processing an event")
at backtype.storm.util$exit_process_BANG_.doInvoke(util.clj:325) [storm-core-0.9.5.jar:0.9.5]
at clojure.lang.RestFn.invoke(RestFn.java:423) [clojure-1.5.1.jar:na]
at backtype.storm.event$event_manager$fn__2625.invoke(event.clj:48) [storm-core-0.9.5.jar:0.9.5]
at clojure.lang.AFn.run(AFn.java:24) [clojure-1.5.1.jar:na]
at java.lang.Thread.run(Thread.java:745) [na:1.7.0_79]
我的storm.yaml的基本配置是
storm.zookeeper.servers:
- "127.0.0.1"
storm.local.dir: "/mnt/storm"
nimbus.host: "127.0.0.1"
supervisor.slots.ports:
- 6700
在 spout 收到消息之前一切正常。
好像org.apache.commons.io.FileUtilsclass漏掉了。您应该创建一个包含您的代码和代码的所有依赖项的 jar(Storm 除外 - Storm jar 将添加到工作节点上的 class 路径)。请查看更多详细信息,了解如何 运行 远程模式(在集群中)拓扑 link:https://storm.apache.org/documentation/Running-topologies-on-a-production-cluster.html
看起来 Storm 的类路径不包括 Apache commons-io v2.4 或错误的版本。
请检查
bin/storm classpath
确认类路径包含commons-io,其版本为2.4。如果它包含不同的版本,您需要手动检查(通过 javadoc)它包含
public static void moveDirectory(File srcDir, File destDir) throws IOException
你可以参考https://github.com/apache/storm/blob/v0.9.5/bin/storm#L101-L105类路径是如何制作的。