Apache Storm Worker进程死亡



我在一个5节点集群中安装了storm-0.9.2。我有一个简单的拓扑结构,有一个喷口和不同数量的螺栓(4、9、22、31)。对于每种配置,我都配置了(#个螺栓+1个)工人。因此,对于4个螺栓,我有5个工人,22个螺栓有23个工人,等等

我在工作日志文件中观察到失败的工作进程,在zookkeeper.out日志文件中发现了相应的EndOfStream异常。当我得到一个干净的测试运行时,每个螺栓处理的元组数量均匀地分布在每个工人身上。在非干净测试运行中,失败的工作程序会尝试重新连接,但是由于元组的数量有限,因此没有更多的元组需要处理。

工人流程死亡的可能原因是什么?

zookeeper.out日志文件摘录:

*2014-10-27 17:40:33,198 [myid:] - WARN  [NIOServerCxn.Factory:0.0.0.0/0.0.0.0:2181:NIOServerCnxn@357] - caught end of stream exception
EndOfStreamException: Unable to read additional data from client sessionid 0x1495431347c001e, likely client has closed socket
        at org.apache.zookeeper.server.NIOServerCnxn.doIO(NIOServerCnxn.java:228)
        at org.apache.zookeeper.server.NIOServerCnxnFactory.run(NIOServerCnxnFactory.java:208)
        at java.lang.Thread.run(Thread.java:744)
2014-10-27 17:40:33,201 [myid:] - INFO  [NIOServerCxn.Factory:0.0.0.0/0.0.0.0:2181:NIOServerCnxn@1007] - Closed socket connection for client /192.168.0.1:45693 which had sessionid 0x1495431347c001e*

集群环境:

  • 风暴0.9.2
  • 动物园管理员3.4.6
  • Ubuntu 13.10

对我来说,这似乎是Zookeeper的问题。有几个想法:

  • 你的动物园管理员超时配置太小
  • 您的Zookeeper实例没有足够的子级(奴隶)来处理您的工作负载

为了进行诊断,首先要增加Zookeeper实例的默认超时时间。如果不起作用,请尝试扩展Zookeeper集群。

您可以合并Zookeeper文档。如果这能解决你的问题,请告诉我们。

最新更新