Zookeeper不断获取WARN:“捕获流异常结束”

时间:2015-05-18 16:45:20

标签: apache-zookeeper flume

我现在正在使用CDH-5.3.1群集,其中包含三个位于三个ips中的zookeeper实例:

133.0.127.40 n1
133.0.127.42 n2
133.0.127.44 n3

启动时一切正常,但是现在我注意到节点n2不断获取WARN:

caught end of stream exception

EndOfStreamException: Unable to read additional data from client sessionid **0x0**, likely client has closed socket
    at org.apache.zookeeper.server.NIOServerCnxn.doIO(NIOServerCnxn.java:220)
    at org.apache.zookeeper.server.NIOServerCnxnFactory.run(NIOServerCnxnFactory.java:208)
    at java.lang.Thread.run(Thread.java:722)

它每秒发生一次,并且仅在n2上发生,而n1和n3都很好。 我仍然可以使用HBase shell来扫描我的表,并使用Solr WEB UI来查询。但是我无法启动Flume代理,这个过程在这一步都停止了:

Logging to org.slf4j.impl.Log4jLoggerAdapter(org.mortbay.log) via org.mortbay.log.Slf4jLog

jetty-6.1.26.cloudera.4

Started SelectChannelConnector@0.0.0.0:41414.

几分钟后,我收到了Cloudera Manager的警告,Flume代理超过了文件描述符的阈值。

有谁知道出了什么问题?提前谢谢。

1 个答案:

答案 0 :(得分:2)

我记得在ZK中看到类似的错误(诚然不在Flume中)。我认为当时的问题是存储在节点上和/或传输到客户端的大量数据。要考虑在zoo.cfg中调整的事情:

  • 限制autopurge.snapRetainCount,例如设置为10
  • autopurge.purgeInterval设置为2(小时)

如果ZK客户端(Flume?)正在向ZK集群传输大型znode,您可能希望在客户端JVM上设置Java系统属性 jute.maxbuffer ,并且可能在服务器节点上,具有足够大的值。我相信这个属性的默认值是1M。确定工作负载的适当值是一种反复试验的做法,我害怕!