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

时间:2017-01-02 07:15:51

标签: hadoop hbase file-descriptor

我已经配置了一个带有hadoop并安装了hbase的2节点集群。它运行正常,我在hadoop中运行了一些基本的map reduce作业,我也能够在hbase中创建和列出一些表。但是我在hdfs / hbase中的数据很少,并且没有工作正在运行。过了一会儿,我开始在hbase日志中出现"Java.net.Socket: Too many open files"错误。

我已经寻找了一些解决方案,但主要有关于增加限制的答案。 但是我很好奇为什么有太多的打开文件。任何其他程序都不使用此集群,除了教程中的简单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脚本或类似的东西关闭它们?

由于

1 个答案:

答案 0 :(得分:0)

  

...我很好奇为什么有太多的打开文件?...

HBase会一直打开所有文件。这是一些例子。如果您有10个表,其中3列famile,每个列族平均有3个文件,每个表每个Region Server有100个区域,则会打开10 * 3 * 3 * 100 = 9000个文件描述符。这个数学不会考虑JAR文件,临时文件等。

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