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