HDFS Namenode启动失败:无法解析node-master主机名求助
HDFS启动故障排查:删除hosts中node-master映射后仍被Namenode调用
问题现象
执行start-dfs.sh时出现如下错误:
start-dfs.sh 23/12/25 17:51:36 WARN hdfs.DFSUtilClient: Namenode for null remains unresolved for ID null. Check your hdfs-site.xml file to ensure namenodes are configured properly. Starting namenodes on [node-master] node-master: ssh: Could not resolve hostname node-master: Temporary failure in name resolution
ping node-master也提示无法解析主机名:
ping: node-master: Temporary failure in name resolution
已删除hosts文件中的node-master映射,当前hosts内容:
127.0.0.1 localhost 127.0.1.1 dell-Inspiron-3593 #HDFS #127.0.0.1 node-master # The following lines are desirable for IPv6 capable hosts ::1 ip6-localhost ip6-loopback fe00::0 ip6-localnet ff00::0 ip6-mcastprefix ff02::1 ip6-allnodes ff02::2 ip6-allrouters # Added by Docker Desktop # To allow the same kube context to work on the host and the container: 127.0.0.1 kubernetes.docker.internal # End of section
已修改hdfs-site.xml,将dfs.namenode.http-address设为localhost,文件内容:
<configuration> <property> <name>dfs.data.dir</name> <value>/home/hdoop/dfsdata/namenode</value> </property> <property> <name>dfs.data.dir</name> <value>/home/hdoop/dfsdata/datanode</value> </property> <property> <name>dfs.replication</name> <value>2</value> </property> <property> <name>dfs.namenode.http-address</name> <value>hdfs://localhost:9870</value> </property> <property> <name>dfs.datanode.http.address</name> <value>hdfs://localhost:9864</value> </property> </configuration>
已尝试重启服务、删除tmp和dfsdata目录后重新启动,问题仍未解决。
解决步骤
1. 检查core-site.xml配置
这是核心环节,fs.defaultFS参数直接决定Namenode的连接地址,打开$HADOOP_HOME/etc/hadoop/core-site.xml,确认配置:
<property> <name>fs.defaultFS</name> <value>hdfs://localhost:9000</value> <!-- 确保此处为localhost而非node-master --> </property>
2. 检查masters/workers文件
- 查看
$HADOOP_HOME/etc/hadoop/masters文件,确认内容为localhost而非node-master - 新版本Hadoop用
workers文件替代slaves,同样检查该文件内容是否为localhost
3. 检查hadoop-env.sh环境变量
打开$HADOOP_HOME/etc/hadoop/hadoop-env.sh,搜索是否存在引用node-master的配置项,例如:
# 若有类似配置,修改为localhost export HADOOP_NAMENODE_OPTS="-Ddfs.namenode.name.dir=... -Dfs.defaultFS=hdfs://node-master:9000"
4. 清除Hadoop缓存并重新格式化
# 清除临时目录 rm -rf $HADOOP_HOME/tmp/* # 重新格式化Namenode(注意:此操作会清空所有HDFS数据,谨慎执行) hdfs namenode -format
5. 检查SSH配置
查看~/.ssh/config文件,确认是否存在node-master的别名配置,如有则删除或修改为localhost:
# 示例错误配置,需删除或修改 Host node-master HostName 127.0.0.1
6. 验证环境变量
确认HADOOP_CONF_DIR指向正确配置目录,避免加载旧配置:
echo $HADOOP_CONF_DIR # 若输出不是$HADOOP_HOME/etc/hadoop,执行: export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
内容的提问来源于stack exchange,提问作者dat lethanh
相关产品推荐
相关产品推荐

