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 上传功能在后台通信时,使用的是配置文件中的主机名(如 vm00vm01 等),而非访问时使用的 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 +wdfs.permissions 配置均正常
域名解析 ✅ 根本原因 浏览器所在机器需能解析 HDFS 节点主机名

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

相关推荐
ClouderaHadoop1 天前
CDH 最隐蔽的坑:NTP 时间同步导致的 5 类故障
hadoop·hbase·kerberos·cloudera·cdh
Gent_倪1 天前
Hadoop生态组件介绍
大数据·hadoop
YaBingSec1 天前
玄机网络安全靶场:Hadoop YARN ResourceManager 未授权 RCE WP
大数据·数据库·hadoop·redis·笔记·分布式·web安全
曹牧2 天前
Java Web 开发:servlet-mapping‌
java·数据仓库·hive·hadoop
菜鸟小码3 天前
HDFS 数据块(Block)机制深度解析:从原理到实战
大数据·hadoop·hdfs
早睡早起早日毕业3 天前
大数据管理与应用系列丛书《大数据平台架构》之第4章 Hadoop 分布式文件系统 (HDFS)
大数据·hadoop·架构
早睡早起早日毕业3 天前
大数据管理与应用系列丛书《大数据平台架构》之第2章 分布式理论基础:大数据系统的架构基石
大数据·hadoop·分布式·架构
菜鸟小码3 天前
HDFS 常用命令大全:从入门到生产实战
大数据·hadoop·hdfs
菜鸟小码5 天前
Hadoop大数据时代的底座和基石
大数据·hadoop·分布式