设置HBase和HDFS的句柄数限制
操作场景
当打开一个HDFS文件时,句柄数限制导出,出现如下错误:
IOException (Too many open files)
此时可以参考该章节设置HBase和HDFS的句柄数。
设置HBase和HDFS的句柄数限制
联系集群管理员增加各用户的句柄数。该配置为操作系统的配置,并非HBase或者HDFS的配置。建议集群管理员根据HBase和HDFS的业务量及各操作系统用户的权限进行句柄数设置。如果某一个用户需对业务量很大的HDFS进行很频繁且很多的操作,则为此用户设置较大的句柄数,避免出现以上错误。
- 使用root用户登录集群所有节点机器或者客户端机器的操作系统,并进入“/etc/security”目录。
- 执行如下命令编辑“limits.conf”文件。
vi limits.conf
新增如下内容:
hdfs - nofile 32768 hbase - nofile 32768
其中“hdfs”和“hbase”表示业务中用到的操作系统用户名称。
- 只有root用户有权限编辑“limits.conf”文件。
- 如果修改的配置不生效,请确认“/etc/security/limits.d”目录下是否有针对操作系统用户的其他nofile值。这样的值可能会覆盖“/etc/security/limits.conf”中配置的值。
- 如果用户需要对HBase进行操作,建议将该用户的句柄数设置为“10000”以上。如果用户需要对HDFS进行操作,建议根据业务量大小设置对应的句柄数,建议不要给太小的值。如果用户需要对HBase和HDFS操作,建议设置较大的值,例如“32768”。
- 使用如下命令查看某一用户的句柄数限制。
su - user_name
ulimit -n
界面会返回此用户的句柄数限制值。如下所示:
8194