storm因机器断电或其他异常导致的supervisor意外终止,再次启动时报错:
1. 2013-09-24 09:15:44,361 INFO [main] daemon.supervisor (NO_SOURCE_FILE:invoke(0)) - Starting supervisor with id 74332654-8925-48a1-b67b-7eacaa52aeca at host hadoop02
2. 2013-09-24 09:15:45,246 ERROR [Thread-2] storm.event (NO_SOURCE_FILE:invoke(0)) - Error when processing event
3. java.lang.RuntimeException: java.io.EOFException
4. at backtype.storm.utils.Utils.deserialize(Utils.java:68)
5. at backtype.storm.utils.LocalState.snapshot(LocalState.java:28)
6. at backtype.storm.utils.LocalState.get(LocalState.java:39)
7. at backtype.storm.daemon.supervisor$sync_processes.invoke(supervisor.clj:187)
8. at clojure.lang.AFn.applyToHelper(AFn.java:161)
9. at clojure.lang.AFn.applyTo(AFn.java:151)
10. at clojure.core$apply.invoke(core.clj:603)
11. at clojure.core$partial$fn__4070.doInvoke(core.clj:2343)
12. at clojure.lang.RestFn.invoke(RestFn.java:397)
13. at backtype.storm.event$event_manager$fn__3058.invoke(event.clj:24)
14. at clojure.lang.AFn.run(AFn.java:24)
15. at java.lang.Thread.run(Thread.java:662)
16. Caused by: java.io.EOFException
17. at java.io.ObjectInputStream$PeekInputStream.readFully(ObjectInputStream.java:2284)
18. at java.io.ObjectInputStream$BlockDataInputStream.readShort(ObjectInputStream.java:2753)
19. at java.io.ObjectInputStream.readStreamHeader(ObjectInputStream.java:777)
20. at java.io.ObjectInputStream.<init>(ObjectInputStream.java:277)
21. at backtype.storm.utils.Utils.deserialize(Utils.java:63)
22. ... 11 more
23. 2013-09-24 09:15:45,260 INFO [Thread-2] storm.util (NO_SOURCE_FILE:invoke(0)) - Halting process: ("Error when processing an event")
解决办法:
删除storm.yaml中配置的storm.local.dir指向的目录中的supervisor和workers两个目录,再次启动即可。