在终端执行jps命令,查看是否有NameNode、DataNode、SecondaryNameNode等HDFS核心进程运行(若为伪分布式模式,至少应有NameNode和DataNode)。若有进程缺失,需检查配置文件(如core-site.xml、hdfs-site.xml)是否正确,或重新启动服务:
stop-dfs.sh && start-dfs.sh
确保服务启动无报错。
Hadoop提供了hdfs dfs命令(或旧版的hadoop fs)用于与HDFS交互,以下是最常用的测试命令:
hdfs dfs -ls /,若返回根目录下的文件/目录列表(如Found 1 items),说明能正常访问HDFS。hdfs dfs -mkdir -p /user/test,创建一个测试目录。若命令执行成功(无报错),说明具备HDFS目录操作权限。/home/ubuntu/test.txt)上传至HDFS,执行hdfs dfs -put /home/ubuntu/test.txt /user/test/。若提示put: /user/test/test.txt’: No such file or directory`,需先创建目标目录;若上传成功,说明能正常写入数据。hdfs dfs -ls /user/test/,若能看到test.txt文件,说明文件上传成功。hdfs dfs -get /user/test/test.txt /home/ubuntu/downloaded_test.txt,若本地生成downloaded_test.txt文件且内容与原文件一致,说明能正常读取数据。若配置了HDFS的Web UI(默认端口为9870,伪分布式模式下为NameNode所在机器的IP或localhost),可通过浏览器访问http://localhost:9870。在“Datanodes”标签页查看DataNode是否正常连接(状态应为“Live”);在“Files”标签页可直观查看HDFS中的文件系统结构。
若需要频繁测试HDFS路径是否存在,可编写Shell脚本。例如,测试/user/test目录是否存在:
#!/bin/bash
path="/user/test"
if hdfs dfs -test -d "$path"; then
echo "Directory $path exists!"
else
echo "Directory $path does not exist!"
fi
赋予脚本执行权限(chmod +x test_hdfs_path.sh),运行脚本即可查看结果。
Connection refused错误,需检查core-site.xml中的fs.defaultFS配置(如hdfs://localhost:9000)是否与hdfs-site.xml中的dfs.namenode.rpc-address一致,或防火墙是否阻止了端口访问。Permission denied错误,需检查HDFS目录权限(如hdfs dfs -chmod 777 /user/test临时开放权限,生产环境需合理配置)。