执行hdfs namenode -format后,ResourceManager等进程优先级设置错误无法消除
解决Hadoop启动时"Cannot set priority of ... process"错误
我之前部署Hadoop的时候也碰到过完全一样的问题,这几乎都是权限不足或者Hadoop进程优先级配置冲突导致的,给你几个实操性很强的解决步骤:
1. 检查并修复用户权限问题
Hadoop不建议用root用户运行,很容易触发系统权限限制:
- 先切换到你专门创建的Hadoop运行用户(比如
hadoop用户):su - hadoop - 检查Hadoop安装目录和数据存储目录的所有者,确保都是Hadoop用户:
如果所有者不对,用以下命令递归修改:ls -ld $HADOOP_HOME $HADOOP_DATA_DIRsudo chown -R hadoop:hadoop $HADOOP_HOME $HADOOP_DATA_DIR
2. 修改Hadoop配置,禁用进程优先级设置
这是最直接解决该报错的方法,因为很多环境下普通用户没有修改进程优先级的权限:
- 进入Hadoop配置目录:
cd $HADOOP_HOME/etc/hadoop - 编辑
yarn-site.xml,添加/修改以下配置项:<property> <name>yarn.nodemanager.priority-setting.disable</name> <value>true</value> </property> - 编辑
hadoop-env.sh,添加一行禁用nice值设置:echo "export HADOOP_NICENESS=0" >> $HADOOP_HOME/etc/hadoop/hadoop-env.sh
3. 重新格式化NameNode并重启服务
注意:这会清空HDFS上的所有数据,如果你是测试环境或者刚部署可以放心操作:
- 先停止所有Hadoop进程:
stop-dfs.sh && stop-yarn.sh - 删除HDFS数据目录下的所有内容(替换成你的实际数据目录):
rm -rf /data/hadoop/hdfs/* - 重新格式化NameNode:
hdfs namenode -format - 重新启动Hadoop服务:
start-dfs.sh && start-yarn.sh
4. (可选)调整系统进程优先级限制
如果你确实需要设置Hadoop进程的优先级,可以修改系统的用户权限限制:
- 编辑
/etc/security/limits.conf文件,添加以下内容(替换hadoop为你的运行用户):hadoop soft nice -20 hadoop hard nice -20 - 修改后退出当前用户重新登录,让配置生效
如果以上方法都没解决,建议去$HADOOP_HOME/logs目录下查看对应服务的日志文件(比如resourcemanager.log、datanode.log),里面会有更详细的错误细节,方便进一步排查。
内容的提问来源于stack exchange,提问作者Jitender Singh




