大早Hadoop的NameNode没法用hadoop用户登陆,ssh –vvv 提示远程无Session资源。bash
用root登陆进去查看hadoop用户的资源信息:服务器
# su -m -c 'ulimit -a' hadoop
su: 没法设置用户ID: 资源暂时不可用多线程
按经验看就是hadoop用户开了太多线程,达到系统最大限制(默认1024)ssh
# ps –eL | wc -l
2219ide
总线程数超过1024,有多是线程满的问题。不过这台服务器已经调整过用户线程限制了,为什么还会出现这个问题呢?oop
用户环境变量,/etc/profile.d/ulimit.sh :线程
#!/bin/bash
[ "$(id -u)" == "0" ] && ulimit -n 1048576
ulimit -u 10000hadoop
系统限制配置,/etc/security/limits.conf:ci
* soft nproc 10000
* hard nproc 10000
* soft nofile 1048576
* hard nofile 1048576资源
验证一下,结果仍是设置无效:
# su -m -c 'ulimit -u' nobody
1024
最后肯定是因为CentOS 6.4版本新增了限制配置 /etc/security/limits.d/90-nproc.conf ,以保证root用户无限制。此配置会覆盖主配置文件的设定:
# Default limit for number of user's processes to prevent
# accidental fork bombs.
# See rhbz #432903 for reasoning.* soft nproc 1024
root soft nproc unlimited
OK,问题就此定位!
解决办法:删除 /etc/security/limits.d/90-nproc.conf 文件中1024那一行。
注意:不推荐删除此文件,一方面root无限制的配置丢了;另外一方面若是此配置文件不存在,执行系统升级时可能又被写入;文件存在时,升级系统时,即便此文件须要更新,也不会被覆盖而是生成 90-nproc.conf.rpmnew。