Mac通过Homebrew安装Hadoop后ResourceManager等进程启动失败求助
Mac下Hadoop ResourceManager/NodeManager启动失败(优先级报错)的排查与解决
核心问题定位
启动时出现ERROR: Cannot set priority of resourcemanager/nodemanager process,本质是Mac系统权限限制导致Hadoop无法调整进程优先级,同时可能伴随配置文件参数不当。
解决步骤
1. 禁用YARN进程优先级设置
找到Homebrew安装的Hadoop配置目录(通常为/usr/local/Cellar/hadoop/<你的Hadoop版本>/libexec/etc/hadoop),编辑yarn-env.sh:
- 添加或修改以下配置,清空优先级参数:
export YARN_RESOURCEMANAGER_PRIORITY="" export YARN_NODEMANAGER_PRIORITY="" - 保存后重启集群
2. 修改启动脚本跳过优先级调整
进入Hadoop的sbin目录,编辑yarn-daemon.sh:
- 找到包含
renice的代码块:if [ $priority != "" ]; then renice $priority -p $pid > /dev/null 2>&1 fi - 注释或删除这段代码,保存后重新执行
./start-all.sh
3. 验证核心配置正确性
检查以下配置文件,确保参数符合单机环境要求:
- core-site.xml:
<property> <name>fs.defaultFS</name> <value>hdfs://localhost:9000</value> </property> <property> <name>hadoop.tmp.dir</name> <value>/tmp/hadoop-${user.name}</value> </property> - hdfs-site.xml:
<property> <name>dfs.replication</name> <value>1</value> </property> - yarn-site.xml:
<property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> <property> <name>yarn.resourcemanager.address</name> <value>localhost:8032</value> </property>
4. 确保Java环境变量正确配置
终端执行echo $JAVA_HOME,确认输出有效JDK路径(如/Library/Java/JavaVirtualMachines/jdk1.8.0_301.jdk/Contents/Home)。若未配置,在~/.zshrc或~/.bash_profile中添加:
export JAVA_HOME=/Library/Java/JavaVirtualMachines/你的JDK版本/Contents/Home export PATH=$JAVA_HOME/bin:$PATH
执行source ~/.zshrc(对应你的shell配置文件)使配置生效。
5. 启动后进程验证
执行jps命令,确认以下进程全部运行:
- NameNode
- SecondaryNameNode
- DataNode
- ResourceManager
- NodeManager
- Jps
若DataNode未启动,删除hadoop.tmp.dir指定的临时目录(默认/tmp/hadoop-你的用户名),重新执行hdfs namenode -format后重启集群。
完成以上步骤后,访问localhost:9870即可正常浏览HDFS文件系统,localhost:8088可查看YARN资源管理页面。
内容的提问来源于stack exchange,提问作者Dilrose Reji
相关产品推荐
相关产品推荐

