由于以下异常,我的所有HbaseRegion服务器都崩溃了(已停止):
java.net.SocketException: Too many open files
at sun.nio.ch.Net.socket0(Native Method)
at sun.nio.ch.Net.socket(Net.java:441)
at sun.nio.ch.Net.socket(Net.java:434)
at sun.nio.ch.SocketChannelImpl.<init>(SocketChannelImpl.java:105)
at sun.nio.ch.SelectorProviderImpl.openSocketChannel(SelectorProviderImpl.java:60)
at java.nio.channels.SocketChannel.open(SocketChannel.java:142)
at org.apache.hadoop.net.StandardSocketFactory.createSocket(StandardSocketFactory.java:62)
at org.apache.hadoop.hdfs.DFSOutputStream.createSocketForPipeline(DFSOutputStream.java:1620)
但是我确实将操作系统用户文件描述符增加到了65535,并且给Hbase这个数字是55535,为什么Hbase仍然在这个配置上崩溃?
我试图向Hbase插入20万条大行,每行可能有1MB-10MB,前10万条记录运行良好,但第二条10万条记录导致Hbase崩溃。
答案 0 :(得分:2)
根据HBase文档HBase Configuration,您应该能够检查您相信设置的ulimit是否已设置:
另外,一个常见的错误是管理员会为特定用户提供文件描述符,但无论出于何种原因,HBase将像其他人一样运行。 HBase在其日志中打印作为其所见的ulimit的第一行。确保其正确。