使用文件流上传文件报错
首先,确认报错信息。
之前在使用虚拟机搭建完全分布式的时候曾经测试过使用IO流上传文件到HDFS并且成功,而这次报错发生在我将hadoop集群换成了在阿里云的伪分布式集群后。
阿里云ECS基本信息
Ubuntu 18.04
123.57.x.x(公网)
172.17.51.183(私网)
阿里云ECS hosts文件
检查一下伪分布式下hadoop集群的配置信息
hdfs-site.xml
core-site.xml
shell命令正常执行,
jps显示NameNode,DataNode,SecondaryNameNode
解决
添加配置信息
文件夹和文件名都是存放在 NameNode 上的,本地可以通过公网访问 NameNode,所以创建文件夹和文件都可以,但是写数据的时候,NameNode 和DataNode 是通过内网通信的,NameNode 会返回给本地 DataNode 的内网 IP,本地就访问不了了。
所以在代码中添加下面配置信息,可以使得NameNode不返回DataNode的私网IP,取而代之返回的是DataNode的主机名。
//1.获取fs对象
Configuration conf =