无法访问Hadoop集群文件:WebHDFS调用报错求助
问题排查方案
核心原因:端口使用错误
你当前代码里用的9000是HDFS的RPC/IPC通信端口,而WebHDFS服务运行在NameNode的HTTP端口上,默认是50070,这是导致报错的主要原因。
具体修复步骤
修改代码中的端口配置
将WebHDFS客户端的端口从9000改为50070:var hdfs = WebHDFS.createClient({ user: 'ubuntu', host: 'localhost', port: 50070 // 替换为WebHDFS默认端口 });确认WebHDFS功能已启用
检查Hadoop配置文件${HADOOP_HOME}/etc/hadoop/hdfs-site.xml,确保存在以下配置项:<property> <name>dfs.webhdfs.enabled</name> <value>true</value> </property>如果之前没有添加该配置,修改后需要重启HDFS服务:
stop-dfs.sh start-dfs.sh验证WebHDFS服务可用性
用curl命令测试WebHDFS是否正常响应:curl "http://localhost:50070/webhdfs/v1/sample.txt?op=OPEN&user.name=ubuntu"如果返回包含文件内容或跳转地址的响应,说明WebHDFS服务正常。
重新运行Node.js代码
修改端口后重新执行脚本,应该可以正常读取HDFS中的/sample.txt文件。
补充说明
你提到的50700端口无法连接,大概率是因为该端口并非WebHDFS服务端口(不同Hadoop版本的端口可能有差异,但默认WebHDFS端口都是50070或9870,后者是Hadoop 3.x的默认HTTP端口),可以通过查看Hadoop的hadoop-env.sh或hdfs-site.xml中的dfs.namenode.http-address配置确认准确端口。
内容的提问来源于stack exchange,提问作者shihack
相关产品推荐
相关产品推荐

