我在单个节点上运行风暴群集,即nimbus,supervisor都在分布式模式下运行在同一节点上。在没有任何问题的情况下,拓扑运行了7天,但主管守护程序突然死亡。没有supervisor.log文件存在,在检查工作日志时,我发现了以下异常:
java.io.IOException: No space left on device
at java.io.FileOutputStream.writeBytes(Native Method) ~[na:1.7.0_51]
at java.io.FileOutputStream.write(FileOutputStream.java:325) ~[na:1.7.0_51]
at org.apache.commons.io.FileUtils.writeByteArrayToFile(FileUtils.java:2095) ~[commons-io-2.4.jar:2.4]
at org.apache.commons.io.FileUtils.writeByteArrayToFile(FileUtils.java:2078) ~[commons-io-2.4.jar:2.4]
at backtype.storm.utils.LocalState.persist(LocalState.java:102) ~[storm-core-0.9.3.jar:0.9.3]
at backtype.storm.utils.LocalState.put(LocalState.java:82) ~[storm-core-0.9.3.jar:0.9.3]
at backtype.storm.daemon.worker$do_heartbeat.invoke(worker.clj:69) ~[storm-core-0.9.3.jar:0.9.3]
我已经搜索过此异常,但我无法理解为什么会发生这种情况。我的系统上有足够的空间。而且我怀疑主管是否因某些工人而死?在我的设置中,我使用 storm.local.dir:作为 / mnt / storm 。
当我们已经拥有一个zookeeper时,LocalState.java的用途是什么? 我在这个链接上找到了关于storm-user的一些讨论:https://groups.google.com/forum/#!topic/storm-user/Q7-sM42gWi0。
但是在那次讨论中,他们一直在本地模式中运行风暴,而Nathan Marz也为此提供了解释。但就我而言,它是分布式模式。如有需要,请询问更多信息。感谢