Hadoop 通过 Web 界面上传文件到 HDFS 失败解决方案

问题描述

最近在复用一个之前搭建好的大数据测试平台时,发现通过 HDFS 的 Web 界面上传文件失败了,浏览器报错如下:

复制代码
Couldn't upload the file xxxx.yyy

之前使用 Web 上传功能是正常的,这次突然出现报错,需要逐步排查原因。


(一)排查一:目录权限问题

现象分析

在 HDFS 中,通过命令行创建的目录,其所属用户是当前 Linux 登录用户(例如 ac);而通过 Web 界面创建的目录,默认所属用户是 dr.who。

如果目录权限设置不当,可能导致 Web 用户没有写入权限。

尝试修复

首先尝试放宽目标目录的写权限:

bash 复制代码
hdfs dfs -chmod +w /thePathName

结果:重新上传文件,依然失败。 ❌

进一步检查

检查 hdfs-site.xml 中的权限配置:

bash 复制代码
vim hdfs-site.xml

关键配置项如下:

xml 复制代码
<configuration>
  ...
  <property>
    <!-- 测试环境可将 HDFS 权限检查关闭,便于多用户访问 -->
    <name>dfs.permissions</name>
    <value>true</value>
  </property>
  ...
</configuration>

注:若将 dfs.permissions 设为 false,则关闭 HDFS 的文件权限检查,所有用户均可随意访问。生产环境不建议关闭。

结论:本次问题并非由目录权限引起。


(二)排查二:域名解析问题

关键线索

按 F12 打开浏览器开发者工具,在控制台发现了关键错误信息:

(内部请求使用了配置中的主机名,而非 IP 地址)

原因定位

回想起之前测试成功时,浏览器和服务器在同一台机器上,且本地 hosts 文件中配置了各虚拟机的主机名与 IP 映射关系。

而这次使用的是另一台电脑,直接通过 IP 地址访问 HDFS Web 界面:

复制代码
http://192.168.168.121:9870/explorer.html

问题根源: HDFS 的 Web 上传功能在后台通信时,使用的是配置文件中的主机名(如 vm00、vm01 等),而非访问时使用的 IP 地址。如果浏览器所在机器无法解析这些主机名,上传请求就会失败。

解决方案

在浏览器所在机器的 hosts 文件中,添加 HDFS 集群各节点的主机名映射:

bash 复制代码
# Linux/Mac: /etc/hosts
# Windows: C:\Windows\System32\drivers\etc\hosts

192.168.168.121 vm00
192.168.168.122 vm01
192.168.168.123 vm02
192.168.168.124 vm10
192.168.168.125 vm11
# ... 其他节点

刷新 DNS 缓存

修改 hosts 文件后,需要刷新 DNS 缓存使其立即生效:

Windows 系统:

cmd 复制代码
ipconfig /flushdns

Linux 系统:

bash 复制代码
sudo systemctl restart systemd-resolved
# 或
sudo service network-manager restart

macOS 系统:

bash 复制代码
sudo dscacheutil -flushcache
sudo killall -HUP mDNSResponder

验证结果

刷新 DNS 后,重新通过 Web 界面上传文件,上传成功! ✅


总结

排查项 结果 说明
目录权限 ❌ 不是原因 chmod +w 和 dfs.permissions 配置均正常
域名解析 ✅ 根本原因 浏览器所在机器需能解析 HDFS 节点主机名

核心要点: 使用 HDFS Web 界面上传文件时,浏览器所在计算机必须能够正确解析 HDFS 集群中各节点的主机名。建议通过配置本地 hosts 文件或搭建内网 DNS 服务来解决。

相关推荐
Francek Chen7 小时前
【大数据处理与分析】数据仓库Hive:09 Hive 编程实践
大数据·数据仓库·hive·hadoop·sql
茶海棠3 天前
Hadoop+zookeeper+HBase+Kafka集群搭建全流程
hadoop·zookeeper·kafka·hbase
Gl�ria4 天前
Hadoop 速刷:HDFS / MR / YARN / Spark / Hive
hadoop·hdfs·mr
FserSuN4 天前
Hive 分区表存储与查询优化学习总结
hive·hadoop·学习
测试盐5 天前
spark作业日志定位过程
java·hadoop·spark
NiceZack6 天前
Hadoop 部署全流程教程:从新装 CentOS 到伪分布式与完全分布式
hadoop·分布式·centos
棣廷8 天前
初识Hive(2)
数据仓库·hive·hadoop
father_12279 天前
【ambari管理下hdp2.6.5升级hive1.2.1-2.1.0-2.3.3】
hive·hadoop·ambari
magic_kid_20109 天前
HDFS 故障复盘:千万级 block 导致 FBR 超过 128 MiB,DataNode 被判定为 dead
大数据·hadoop·hdfs·hadoop 故障
小刘在重生~10 天前
Servlet_day2 (上)|Servlet 整合 JDBC|请求转发 forward|Request 作用域
hive·hadoop·servlet