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 服务来解决。

相关推荐
曾阿伦2 天前
Windows 下运行 Hadoop 并部署到 AWS EMR 指南
hadoop·windows·aws
极光代码工作室3 天前
基于Spark的日志监控与分析平台
大数据·hadoop·python·spark·数据可视化
liuxiaowei34 天前
Winform+WPF双框架实战:喷涂工艺SCADA上位机从0到1搭建(附采集监控源码+车间踩坑实录)
大数据·hadoop·wpf
hkNaruto7 天前
【大数据】《传统Hadoop大数据技术入门:补充与进阶——从数据格式到智能决策的问答实录》
大数据·hadoop·分布式
牛奶咖啡137 天前
大数据Hadoop运维应用实践——双NameNode高可用Hadoop集群架构(下)
大数据·hadoop·hadoop集群配置文件解析·hadoop高可用集群安装部署·配置指定多台服务器相互免密·配置hadoop服务开机自启·ansible部署hadoop
李昊哲小课8 天前
spark4 集群安装
大数据·hadoop·zookeeper·spark
buligbulig9 天前
Hadoop环境安装和集群创建
大数据·hadoop·分布式
香山上的麻雀100810 天前
Hive内部表(MANAGED_TABLE)的“批量删除分区”特性详解
数据仓库·hive·hadoop
牛奶咖啡1311 天前
大数据Hadoop运维应用实践——双NameNode高可用Hadoop集群架构(上)
hadoop·高可用hadoop集群搭建·给服务器做免密信任·修改服务器主机名称·服务器本地配置主机名与ip映射·服务器配置jdk环境·服务器安装zooker
jjjava2.012 天前
SpringMVC入门指南:从零掌握核心要点
数据仓库·hive·hadoop