You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

通过localhost:9870上传TXT至HDFS时,Hadoop报错:Failed to retrieve data...

解决HDFS上传时的"Failed to retrieve data from /webhdfs/v1/?op=LISTSTATUS: Server Error"报错

我之前调试WebHDFS上传功能时也碰到过一模一样的错误,大概率是服务状态、配置或者权限类的问题,咱们一步步来排查解决:

  • 先确认NameNode服务是否正常运行
    WebHDFS的LISTSTATUS操作直接依赖NameNode,先检查它有没有在运行。执行jps命令,看看输出里有没有NameNode进程;或者用hadoop dfsadmin -report查看集群状态,正常情况下会显示NameNode的活跃状态。如果进程没启动,直接执行start-dfs.sh启动整个HDFS集群,或者单独启动NameNode:hadoop-daemon.sh start namenode

  • 检查WebHDFS相关配置
    打开$HADOOP_HOME/etc/hadoop/hdfs-site.xml,确认以下配置项是否正确:

    • dfs.webhdfs.enabled必须设为true(这是开启WebHDFS的核心开关)
    • dfs.namenode.http-address要对应你的NameNode地址和端口,Hadoop 3.x版本默认端口是9870,要和你访问的localhost:9870一致
      改完配置后记得重启NameNode服务,让配置生效。
  • 验证端口与网络连通性
    确保9870端口是可访问的:本地可以用curl http://localhost:9870测试,能返回HDFS的WebUI页面就说明端口没问题;如果是远程访问,还要检查防火墙是否放行9870端口,避免被拦截。

  • 检查NameNode存储目录权限
    如果NameNode的元数据目录或者数据目录权限不对,会导致服务初始化失败,进而引发WebHDFS请求报错。找到你配置的dfs.namenode.name.dirdfs.datanode.data.dir对应的路径,执行以下命令修复权限:

    chown -R hadoop:hadoop /path/to/namenode/dir
    chmod -R 755 /path/to/namenode/dir
    

    (把hadoop:hadoop换成你运行Hadoop的用户组,路径换成实际目录)

  • 查看NameNode日志定位细节
    如果上面的步骤都没解决问题,直接去看NameNode的日志文件,路径一般是$HADOOP_HOME/logs/hadoop-*-namenode-<hostname>.log。日志里会有更具体的错误原因,比如磁盘空间不足、元数据损坏等。如果是元数据损坏,可以先停掉NameNode,执行hdfs namenode -recover尝试恢复(操作前建议备份元数据目录)。

内容的提问来源于stack exchange,提问作者JDDD

火山引擎 最新活动