我现在正在使用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代理超过了文件描述符的阈值。
有谁知道出了什么问题?提前谢谢。
答案 0 :(得分:2)
我记得在ZK中看到类似的错误(诚然不在Flume中)。我认为当时的问题是存储在节点上和/或传输到客户端的大量数据。要考虑在zoo.cfg中调整的事情:
autopurge.snapRetainCount
,例如设置为10 autopurge.purgeInterval
设置为2(小时)如果ZK客户端(Flume?)正在向ZK集群传输大型znode,您可能希望在客户端JVM上设置Java系统属性 jute.maxbuffer
,并且可能在服务器节点上,具有足够大的值。我相信这个属性的默认值是1M。确定工作负载的适当值是一种反复试验的做法,我害怕!