Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/hadoop/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Hadoop 为什么Hbase中打开的文件太多_Hadoop_Hbase_File Descriptor - Fatal编程技术网

Hadoop 为什么Hbase中打开的文件太多

Hadoop 为什么Hbase中打开的文件太多,hadoop,hbase,file-descriptor,Hadoop,Hbase,File Descriptor,我已经用hadoop配置了一个2节点集群,并安装了hbase。它工作正常,我在hadoop中运行了一些基本的map reduce作业,我还能够在hbase中创建和列出一些表。但是,我在hdfs/hbase中几乎没有数据,并且没有正在运行的作业。过了一会儿,我开始在hbase日志中发现“Java.net.Socket:打开的文件太多”错误 我已经寻找了一些解决方案,但主要有关于增加限制的答案。然而,我很好奇为什么有太多打开的文件。这个集群没有被任何其他程序使用,除了教程中的简单map reduce

我已经用hadoop配置了一个2节点集群,并安装了hbase。它工作正常,我在hadoop中运行了一些基本的map reduce作业,我还能够在hbase中创建和列出一些表。但是,我在hdfs/hbase中几乎没有数据,并且没有正在运行的作业。过了一会儿,我开始在hbase日志中发现
“Java.net.Socket:打开的文件太多”
错误

我已经寻找了一些解决方案,但主要有关于增加限制的答案。然而,我很好奇为什么有太多打开的文件。这个集群没有被任何其他程序使用,除了教程中的简单map reduce任务之外,我也没有运行过任何作业

为什么会这样

编辑

根据Andrzej的建议,我已经运行了这个命令(
lsof | grep java
),我发现在不同的端口中有很多连接等待关闭。这只是命令输出的几行

java      29872     hadoop  151u     IPv6          158476883      0t0       TCP os231.myIP:44712->os231.myIP:50010 (CLOSE_WAIT)
java      29872     hadoop  152u     IPv6          158476885      0t0       TCP os231.myIP:35214->os233.myIP:50010 (CLOSE_WAIT)
java      29872     hadoop  153u     IPv6          158476886      0t0       TCP os231.myIP:39899->os232.myIP:50010 (CLOSE_WAIT)
java      29872     hadoop  155u     IPv6          158476892      0t0       TCP os231.myIP:44717->os231.myIP:50010 (CLOSE_WAIT)
java      29872     hadoop  156u     IPv6          158476895      0t0       TCP os231.myIP:44718->os231.myIP:50010 (CLOSE_WAIT)
现在的问题是,如果连接现在没有用,为什么它们不自动关闭?如果它们没有自动中止,有没有办法用crontab脚本或类似的东西来关闭它们

谢谢

。。。我很好奇为什么打开的文件太多

HBase始终打开所有文件。这里有一些例子。如果有10个表,每个表有3个列族,每个列族平均有3个文件,每个表的每个区域服务器有100个区域,则将打开10*3*3*100=9000个文件描述符。这个数学没有考虑JAR文件、temp文件等


ulimit
的建议值为10240,但您可能希望将其设置为更符合您的情况的值。

内核中有限制,SELinux中有限制,服务中有限制打开的文件。看,这取决于你的操作系统。我知道限制。但我想知道为什么有这么多的开放文件。增加限额可能是一个临时解决办法。是否存在一些应该关闭的打开文件等?如果使用linux调用
lsof | grep java
。这可能是进一步调查的指针。萨米:请将以上命令的结果粘贴到@andrzej jozwikw上。您使用的hbase版本是什么?不是吗