请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

对这一节文件查看和下一节文件写入出问题的解决方案(云服务器开发)。

对这一节使用网络云主机的同学,常常出现文件读取不成功,还有下一节的写入不成功的情况。我把解决解决方法进行总结(以下几步都需要):

  1. 把云主机上的/etc/hosts文件里面的内容加入我们想要的主机的名称(但一定不要_),并且地址要是自己的云主机的内网地址。
  2. 退出云主机,再次登陆,如果还没显示自己的刚才配置的云主机的名称,那就通过hostname + 你想要的云主机的名称强制更改云主机的名称。
  3. 重启dfs,看自己的文件的Availability是我们刚才配置的主机名称。
  4. 把自己的电脑的hosts加入自己的云主机的名称,并且配置云主机的外网地址。
  5. 最后在我们的代码中的configuartion构建的下面,加入这句代码configuration.set("dfs.client.use.datanode.hostname", "true");

这一套打完之后运行就没问题了。如果名称带有_会报错Does not contain a valid host;port authority的错误。

正在回答 回答被采纳积分+3

8回答

WineOrShe 2020-05-24 23:50:46

我是这么解决的,整个人都舒畅了:
1、楼主说的第5点,最后在我们的代码中的configuartion构建的下面,加入这句代码configuration.set("dfs.client.use.datanode.hostname", "true");

2、在云主机安全组配置规则里添加50010端口,这个端口是DataNode 用于数据传输服务端口 默认是 50010

3 回复 有任何疑惑可以回复我~
weixin_慕妹114626 2020-05-04 18:10:03

感谢!再补充一下,还需要在云主机安全组配置规则里添加50010端口,这个端口是DataNode 用于数据传输服务端口 默认是 50010

3 回复 有任何疑惑可以回复我~
慕标2366677 2020-04-10 19:52:19

 windows 用户在这修改host文件

C:\Windows\System32\drivers\etc\hosts

1 回复 有任何疑惑可以回复我~
weixin_慕瓜0383873 2020-04-09 19:49:52

感谢蜥蜴同学的回答,成功解决问题。

补充一句,第五步里面的configuration.set("dfs.client.use.datanode.hostname", "true");中的hostname就是hostname,不是修改后的主机名。

我修改成了主机名字然后折腾了半天,给我整吐了。

1 回复 有任何疑惑可以回复我~
Michael_PK 2020-03-27 17:40:52

总结的很到位

1 回复 有任何疑惑可以回复我~
dh1211 2020-07-22 05:56:11

感谢分享,我也来补充一点,hadoop3.x版本,云主机要开放9866(Hadoop2.x 是50010),是看的回答区的小伙伴加端口对照

0 回复 有任何疑惑可以回复我~
慕九州8702158 2020-07-21 15:57:07

第一步的云主机名称是hadoop000吗

0 回复 有任何疑惑可以回复我~
  • 看你上一楼的,就是答案
    回复 有任何疑惑可以回复我~ 2020-07-21 15:59:22
user_hk 2020-05-12 16:44:32

按照大佬的步骤完成配置,又报了异常。有同学遇到过吗?麻烦解答下,谢谢~

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)


0 回复 有任何疑惑可以回复我~
  • user_hk #1
    测试把默认端口8020改成其他就正常了(注意防火墙开放该端口)
    回复 有任何疑惑可以回复我~ 2020-05-12 22:40:55
问题已解决,确定采纳
还有疑问,暂不采纳
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号