hadoop有两种部署方式:single node和cluster。
single node只在一台机上部署所有服务,且只有一个datanode。如果只是验证功能,可以使用single node,以节省资源。具体部署过程可参考官方文档[Apache Hadoop 3.3.6 – Hadoop: Setting up a Single Node Cluster](Apache Hadoop 3.3.6 – Hadoop: Setting up a Single Node Cluster)以及第三方博客文章:[Hadoop Installation on Windows 10 using WSL](Hadoop Installation on Windows 10 using WSL - DEV Community)。
但这种方式无法支持在Windows系统中访问HDFS服务。比如运行spark样例程序org.apache.spark.examples.HdfsTest时,会一直提示无法访问namenode和datanode。原因是namenode中存储的datanode的地址是127.0.0.1:xxx。Windows上的客户端应用拿到这个地址后,仍然无法直接访问。hdfs文件读写流程可参考下图:
解决办法:
- 在文件etc/hadoop/core-site.xml中修改配置fs.defaultFS参数为wsl的ip,比如:
<property> <name>fs.defaultFS</name> <value>hdfs://172.31.29.22:9000</value> </property> - 在文件etc/hadoop/workers中修改worker节点的ip为wsl的ip,默认是127.0.0.1
172.31.29.22 - 重新格式化namenode,重新启动服务即可。
hdfs namenode -format