为什么 Hbase 中打开的文件太多
Why Too many open files in Hbase
我已经使用 hadoop 配置了一个 2 节点集群并安装了 hbase。它工作正常,我在 hadoop 中有 运行 一些基本的 map reduce 作业,我也能够在 hbase 中创建和列出一些表。然而,我在 hdfs/hbase 中的数据很少,并且没有工作 运行ning。一段时间后,我开始在 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 脚本或类似的东西关闭它们?
谢谢
... I am curious about why there are too many open files?...
HBase 始终保持打开所有文件。这是一些例子。如果您有 10 个 tables,每个列族有 3 个列族,每个列族平均有 3 个文件,每个 table 每个区域服务器有 100 个区域,将有 10*3*3*100 = 9000 个文件描述符打开。这个数学没有考虑 JAR 文件、临时文件等。
ulimit
的建议值为 10240,但您可能希望将其设置为更符合您的情况的值。
我已经使用 hadoop 配置了一个 2 节点集群并安装了 hbase。它工作正常,我在 hadoop 中有 运行 一些基本的 map reduce 作业,我也能够在 hbase 中创建和列出一些表。然而,我在 hdfs/hbase 中的数据很少,并且没有工作 运行ning。一段时间后,我开始在 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 脚本或类似的东西关闭它们?
谢谢
... I am curious about why there are too many open files?...
HBase 始终保持打开所有文件。这是一些例子。如果您有 10 个 tables,每个列族有 3 个列族,每个列族平均有 3 个文件,每个 table 每个区域服务器有 100 个区域,将有 10*3*3*100 = 9000 个文件描述符打开。这个数学没有考虑 JAR 文件、临时文件等。
ulimit
的建议值为 10240,但您可能希望将其设置为更符合您的情况的值。