更新时间:2024-07-19 GMT+08:00

设置HBase和HDFS的ulimit

现象描述

当打开一个HDFS文件时,句柄数限制导出,出现如下错误:

IOException (Too many open files)

处理步骤

您可以联系集群管理员增加各用户的句柄数。该配置为操作系统的配置,并非HBase或者HDFS的配置。建议集群管理员根据HBase和HDFS的业务量及各操作系统用户的权限进行句柄数设置。如果某一个用户需对业务量很大的HDFS进行很频繁且很多的操作,则为此用户设置较大的句柄数,避免出现以上错误。

  1. 使用root用户登录集群所有节点机器或者客户端机器的操作系统,并进入“/etc/security”目录。
  2. 执行如下命令编辑“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”。

  3. 您可以使用如下命令查看某一用户的句柄数限制。

    su - user_name

    ulimit -n

    界面会返回此用户的句柄数限制值。如下所示:

    8194