对这一节文件查看和下一节文件写入出问题的解决方案(云服务器开发)。
来源:3-19 HDFS API编程之查看HDFS文件内容

蜥蜴
2020-03-27
对这一节使用网络云主机的同学,常常出现文件读取不成功,还有下一节的写入不成功的情况。我把解决解决方法进行总结(以下几步都需要):
- 把云主机上的/etc/hosts文件里面的内容加入我们想要的主机的名称(但一定不要
_
),并且地址要是自己的云主机的内网地址。 - 退出云主机,再次登陆,如果还没显示自己的刚才配置的云主机的名称,那就通过
hostname
+ 你想要的云主机的名称强制更改云主机的名称。 - 重启dfs,看自己的文件的
Availability
是我们刚才配置的主机名称。 - 把自己的电脑的hosts加入自己的云主机的名称,并且配置云主机的外网地址。
- 最后在我们的代码中的configuartion构建的下面,加入这句代码
configuration.set("dfs.client.use.datanode.hostname", "true");
。
这一套打完之后运行就没问题了。如果名称带有_
会报错Does not contain a valid host;port authority
的错误。
8回答
-
WineOrShe
2020-05-24
我是这么解决的,整个人都舒畅了:
1、楼主说的第5点,最后在我们的代码中的configuartion构建的下面,加入这句代码configuration.set("dfs.client.use.datanode.hostname", "true");2、在云主机安全组配置规则里添加50010端口,这个端口是DataNode 用于数据传输服务端口 默认是 50010
30 -
weixin_慕妹114626
2020-05-04
感谢!再补充一下,还需要在云主机安全组配置规则里添加50010端口,这个端口是DataNode 用于数据传输服务端口 默认是 50010
30 -
慕标2366677
2020-04-10
windows 用户在这修改host文件
C:\Windows\System32\drivers\etc\hosts
10 -
weixin_慕瓜0383873
2020-04-09
感谢蜥蜴同学的回答,成功解决问题。
补充一句,第五步里面的configuration.set("dfs.client.use.datanode.hostname", "true");中的hostname就是hostname,不是修改后的主机名。
我修改成了主机名字然后折腾了半天,给我整吐了。
10 -
Michael_PK
2020-03-27
总结的很到位
10 -
dh1211
2020-07-22
感谢分享,我也来补充一点,hadoop3.x版本,云主机要开放9866(Hadoop2.x 是50010),是看的回答区的小伙伴加端口对照
00 -
慕九州8702158
2020-07-21
第一步的云主机名称是hadoop000吗
012020-07-21 -
user_hk
2020-05-12
按照大佬的步骤完成配置,又报了异常。有同学遇到过吗?麻烦解答下,谢谢~
java.io.IOException: DataStreamer Exception: at org.apache.hadoop.hdfs.DFSOutputStream$DataStreamer.run(DFSOutputStream.java:696) Caused by: java.nio.channels.UnresolvedAddressException at sun.nio.ch.Net.checkAddress(Net.java:101) at sun.nio.ch.SocketChannelImpl.connect(SocketChannelImpl.java:622) at org.apache.hadoop.net.SocketIOWithTimeout.connect(SocketIOWithTimeout.java:192) at org.apache.hadoop.net.NetUtils.connect(NetUtils.java:530) at org.apache.hadoop.hdfs.DFSOutputStream.createSocketForPipeline(DFSOutputStream.java:1610) at org.apache.hadoop.hdfs.DFSOutputStream$DataStreamer.createBlockOutputStream(DFSOutputStream.java:1408) at org.apache.hadoop.hdfs.DFSOutputStream$DataStreamer.nextBlockOutputStream(DFSOutputStream.java:1361) at org.apache.hadoop.hdfs.DFSOutputStream$DataStreamer.run(DFSOutputStream.java:588)
012020-05-12
相似问题