You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PyHdfs操作HDFS报错Expected JSON,WebHDFS是否启用?求解决

解决pyhdfs连接HDFS时出现的「Expected JSON. Is WebHDFS enabled? Got ''」错误

我之前也碰到过一模一样的报错,核心原因就是WebHDFS没有正确启用,或者你的连接参数和HDFS实际配置不匹配,咱们一步步来排查解决:

1. 确认HDFS是否开启WebHDFS功能

登录你的Hadoop namenode节点,找到HDFS配置文件hdfs-site.xml(通常在$HADOOP_HOME/etc/hadoop目录下),检查是否包含以下配置:

<property>
    <name>dfs.webhdfs.enabled</name>
    <value>true</value>
</property>

如果没有这段配置就添加它;如果value是false,直接改成true即可。

2. 重启HDFS服务让配置生效

修改配置后必须重启HDFS才能让WebHDFS生效,执行以下命令:

# 停止HDFS服务
stop-dfs.sh
# 启动HDFS服务
start-dfs.sh

如果你的Hadoop是用systemd管理的,也可以用:

sudo systemctl restart hadoop-namenode
sudo systemctl restart hadoop-datanode

3. 验证WebHDFS是否正常运行

用curl命令测试WebHDFS接口,确认能返回正常的JSON数据:

curl http://34.71.193.160:50070/webhdfs/v1/user/input?op=LISTSTATUS

如果返回结构化的JSON内容,说明WebHDFS已经正常工作;如果还是空白或报错,继续检查配置和服务状态。

4. 修正pyhdfs的连接参数

注意:WebHDFS的默认端口是50070,你代码里用的8123大概率不是WebHDFS的端口(8123通常是HiveServer2或其他服务的端口),修正后的代码示例:

hdfs = pyhdfs.HdfsClient(hosts='34.71.193.160:50070', user_name='root')
files_name = hdfs.listdir('/user/input/')

5. 额外排查点

  • 防火墙检查:确保namenode节点的50070端口对外开放,能被你的客户端正常访问
  • 权限验证:确认root用户有访问/user/input目录的权限,可以在HDFS上执行hdfs dfs -ls /user/input测试

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.07 12:42:42