Mac下Hadoop启动错误:无法设置namenode进程优先级
HDFS启动错误排查:Cannot set priority of namenode and secondarynamenode process
问题描述
执行start-dfs.sh时触发错误:Cannot set priority of namenode and secondarynamenode process xxxx,尝试多种排查方案未解决,不确定是否与dfs.namenode.name.dir目录不存在或权限错误有关,需明确排查方法。
环境信息
- 设备:Macbook Air M1(Ventura 13.1)
- Hadoop版本:3.3.4
- Java版本:11.0.17
现有配置详情
.bash_profile
export HADOOP_HOME=/Users/thi/hadoop-3.3.4 export HADOOP_MAPRED_HOME=$HADOOP_HOME\ export HADOOP_COMMON_HOME=$HADOOP_HOME export HADOOP_HDFS_HOME=$HADOOP_HOME export YARN_HOME=$HADOOP_HOME export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop export YARN_CONF_DIR=$HADOOP_HOME/etc/hadoop export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk-11.0.17.jdk/Contents/Home PATH=$HADOOP_HOME/bin/:$HADOOP_HOME/sbin/:$JAVA_HOME/bin/:$PATH export PATH
core-site.xml
<configuration> <property> <name>fs.defaultFS</name> <value>hdfs://Namenode:9000</value> </property> </configuration>
hadoop-env.sh
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk-11.0.17.jdk/Contents/Home export HADOOP_HOME=/Users/thi/hadoop-3.3.4 export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
hdfs-site.xml
<configuration> <property> <name>dfs.replication</name> <value>1</value> </property> </configuration>
mapred-site.xml
<configuration> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> </configuration>
yarn-site.xml
<configuration> <property> <name>yarn.resourcemanager.hostname</name> <value>localhost</value> </property> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> </configuration>
排查步骤
1. 确认dfs.namenode.name.dir目录状态
- 默认未显式配置该参数时,Hadoop会使用
${hadoop.tmp.dir}/dfs/name,其中hadoop.tmp.dir默认路径为$HADOOP_HOME/tmp - 检查目录是否存在:执行
ls -ld /Users/thi/hadoop-3.3.4/tmp/dfs/name - 若不存在,手动创建:
mkdir -p /Users/thi/hadoop-3.3.4/tmp/dfs/name - 修复权限:执行
chown -R $(whoami):$(whoami) /Users/thi/hadoop-3.3.4/tmp,确保当前用户拥有目录读写权限
2. 解决MacOS进程优先级设置问题
MacOS的nice命令与Linux存在差异,普通用户无法修改进程优先级,导致Hadoop脚本报错:
- 打开
$HADOOP_HOME/etc/hadoop/hadoop-env.sh,添加一行:export HADOOP_NICENESS=0 - 或者直接修改
start-dfs.sh脚本,找到设置nice的代码段(类似if [ "$HADOOP_NICENESS" != "" ]; then),注释掉该逻辑
3. 验证Hosts映射
core-site.xml中使用了Namenode作为主机名,需确保本地Hosts配置正确:
- 打开
/etc/hosts,添加条目:127.0.0.1 Namenode - 执行
ping Namenode验证解析正常
4. 校验环境变量正确性
- 执行
echo $JAVA_HOME和echo $HADOOP_HOME,确认路径与配置一致 - 执行
java -version和hadoop version,确认版本匹配且命令可正常执行
5. 查看详细日志定位根因
- 进入Hadoop日志目录:
cd $HADOOP_HOME/logs - 查看
namenode-*.log和secondarynamenode-*.log文件,日志中会包含启动失败的具体原因(如目录权限不足、配置错误等)
内容的提问来源于stack exchange,提问作者thiev980
相关产品推荐
相关产品推荐

