单节点Hadoop上传文件时报1个运行datanode被排除的错误
Hadoop单节点跨设备上传文件报错问题分析
问题诱因
核心诱因是Hadoop DataNode绑定了回环地址127.0.0.1,未对外暴露同网段可访问的物理IP:
- 部署单节点Hadoop时配置文件中使用了localhost/127.0.0.1作为服务地址,NameNode对外宣告的DataNode访问地址为127.0.0.1:9866
- 同网段其他设备访问Hadoop时,会尝试连接自身本地的9866端口,自然无法建立连接,因此客户端直接将该DataNode标记为排除节点
- 单节点环境下没有其他可用DataNode,就会触发
could only be written to 0 of the 1 minReplication nodes的报错
其他次要可能诱因:
- Hadoop服务器防火墙未开放DataNode、NameNode相关端口,即使IP正确也无法建立连接
- HDFS目标写入路径没有给上传用户开放写入权限
- DataNode存储目录磁盘已满,或者目录权限不足无法写入数据
解决方案
核心修复步骤(针对回环地址问题)
- 先停止运行中的HDFS服务:
./stop-dfs.sh
- 修正Hadoop配置文件:
- 编辑
etc/hadoop/core-site.xml,将fs.defaultFS配置的value值修改为hdfs://<Hadoop服务器同网段物理IP>:9000,替换原有localhost/127.0.0.1的配置 - 编辑
etc/hadoop/hdfs-site.xml,新增/修改以下配置:
<property> <name>dfs.datanode.address</name> <value><Hadoop服务器同网段物理IP>:9866</value> </property> <property> <name>dfs.datanode.http.address</name> <value><Hadoop服务器同网段物理IP>:9864</value> </property> - 编辑
- 检查Hadoop服务器的
/etc/hosts文件,确保服务器主机名没有映射到127.0.0.1,改为映射到同网段物理IP - 若无需保留原有HDFS数据,可执行格式化NameNode操作(有数据请提前备份):
hdfs namenode -format
- 重启HDFS服务:
./start-dfs.sh
- 验证配置:执行
hdfs dfsadmin -report,确认返回的DataNode地址为同网段物理IP而非127.0.0.1
其他可能问题排查
- 开放服务端口:关闭服务器防火墙,或者执行命令开放9000、9864、9866、9867端口,以CentOS为例:
firewall-cmd --add-port=9000/tcp --permanent firewall-cmd --add-port=9864/tcp --permanent firewall-cmd --add-port=9866/tcp --permanent firewall-cmd --add-port=9867/tcp --permanent firewall-cmd --reload
- 授权写入路径:给目标上传路径开放读写权限,示例:
hdfs dfs -chmod -R 755 /user/test/uploadedDatasets
- 检查DataNode存储:确认
hdfs-site.xml中配置的dfs.datanode.data.dir目录磁盘使用率未超过90%,且运行Hadoop的用户对该目录有读写权限
内容的提问来源于stack exchange,提问作者vatsa
相关产品推荐
相关产品推荐

