HBase是运行在Hadoop上的数据库,和其他数据库一样,它也要同时打开很多个文件。Linux对于一个进程可打开文件描述符的个数是有限制的。默认的限制是每个进程可以打开1024个文件。为了使HBase能够顺畅的运行,需要调高启动HBase的那个用户允许打开的文件描述符的最大个数。还需要调高nproc设置。nproc设置指定了用户可以同时启动的最大进程数量。如果noproc过低,就会遇到OOM这种错误。
调整的话要调/etc/security/limits.conf文件。该文件的格式如下:
username|@groupname type resource limit
username|@groupname:设置需要被限制的用户名,组名前面加@和用户名区别。也可以用通配符*来做所有用户的限制。
type:有 soft,hard 和 -,soft 指的是当前系统生效的设置值。hard 表明系统中所能设定的最大值。soft 的限制不能比har 限制高。用 - 就表明同时设置了 soft 和 hard 的值。
resource有很多种类,这里用到的有nofile:打开文件的最大数目;npproc:进程的最大数目
要使 limits.conf 文件配置生效,必须要确保 pam_limits.so 文件被加入到启动文件中。查看 /etc/pam.d/login 文件中有:session required /lib/security/pam_limits.so
还可以用ulimit -n 32768设置最大描述符,不过只对当前会话有用,而且要root,或者修改/etc/security/limits.conf,但要重启。