1、文件数
ulimit -n 可查看linux系统的打开文件数限制,推荐至少10000以上,一般是10240,因为最好是1024的倍数。
每个列族至少有一个StoreFile,如果region加载,可能超过6个StoreFile,以下公式计算regionserver上打开文件的数量:
(StoreFiles per ColumnFamily) x (regions per RegionServer)
假设每个region上有3个列族,平均每个列族有3个StoreFiles ,每个regionserver上有1000个region,那么JVM需要打开3*3*1000=9000个文件,这还不包括jar文件、配置文件和其它文件。
2、进程数
ulimit -u 查看系统最大进程数(nproc,number of processes on the system)。这个数太小会导致内存溢出。
修改/etc/security/limits.conf文件,如下:
hadoop - nofile 32768
hadoop - nproc 32000
表示hadoop用户软硬件(soft and hard)的最大打开文件数为32768,最大进程数为32000。
这个配置只能在PAM(pluggable authentication module)用户认证环境下应用。确保/etc/pam.d/common-session文件包含以下语句:
session required pam_limits.so