我正在使用 Hadoop,需要更改打开文件数ulimit -n
。我在 stackoverflow 和其他地方看到过类似的问题,并尝试了这些答案中的所有方法,但仍然不起作用。我正在使用ubuntu 12.04 LTS
。以下是我所做的:
更改限制/etc/security/limits.conf
,我已将设置设为 * 和root
。我还将限制更改为某些数字,例如10000
和unlimited
。
* soft nofile 1513687
* hard nofile 1513687
root soft nofile 1513687
root hard nofile 1513687
我也尝试过使用-
而不是soft
和进行上述设置hard
。进行这些更改后,我对文件进行了/etc/pam.d/
如下更改:
common-session
common-session-noninterative
login
cron
sshd
su
sudo
我已经在每个文件的开头添加了session required pam_limits.so
。我重新启动了有问题的盒子,但设置没有生效。
我还发现/etc/security/limits.d/
目录中有用户hbase
mapred
和的文件hdfs
。我也尝试过更改这些单个文件的限制,但无济于事。
我也尝试过放入ulimit -S -n unlimited
其中/etc/profile
。但是没有用。
最后,我尝试将文件放在limit nofile unlimited unlimited
第一/etc/init.d/hadoop*
行。没有成功。
不过,有一件有趣的事情是,我没有在盒子上安装 HBase,但目录hbase.conf
中有一个文件/etc/security/limits.d/
。此文件中的设置反映在 中。但和ulimit -n
的设置未反映出来。这表明某些东西正在覆盖和 的设置。hdfs.conf
mapred.conf
hdfs
mapred
我想我已经尝试了人们在多个论坛上建议的所有方法,还有其他我可能遗漏或做错的事情吗?
我正在使用它CDH 4.4.0
作为我的 Hadoop 发行版。
答案1
通过执行以下操作,我能够成功更改我的 ulimit 实时优先级和 memlock:
打开/etc/security/limits.conf并添加以下几行(将“tyler”替换为您的 Ubuntu 用户名)
- tyler hard rtprio 95
- 泰勒软rtprio 95
- tyler hard memlock unlimited
- tyler soft memlock unlimited
打开/etc/pam.d/su并确保以下行存在,并且未被注释掉:
session required pam_limits.so
之后,我只需要重新启动计算机,然后我就可以使用这个终端命令来检查我的 ulimit:
ulimit -r -l