连接超时:java.net.ConnectException: Connection timed out: no further informa...
报错信息具体描述:1.读写HDFS文件程序public static void main(String[] args) throws Exception {
final Configuration conf=new Configuration();
conf.addResource("hdfs-site.xml");
conf.addResource("core-site.xml");
conf.set("fs.default.name", "hdfs://bdpha");
Path inFile = new Path("/fei_test/kafka_test/aaa.txt");
FileSystem fs = FileSystem.get(conf);
FSDataOutputStream outputStream = fs.create(inFile);
outputStream.writeUTF("china cstor cstor china");
outputStream.flush();
outputStream.close();
fs.close();
}
2.报错信息
Exception in createBlockOutputStream
java.net.ConnectException: Connection timed out: no further information
at sun.nio.ch.SocketChannelImpl.checkConnect(Native Method)
at sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:739)
at org.apache.hadoop.net.SocketIOWithTimeout.connect(SocketIOWithTimeout.java:206)
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)
3.hosts文件叙述
1》windows中cmd中可以ping通集群主机名
2》windows中telnet中可以ping通集群主机名:端口号
3》集群/etc/hosts文件和windows中的hosts文件内容不一致(做了地址映射)
windows中的hosts文件配置的是外网地址
linux集群中的hosts文件配置的是内网地址
4.疑惑?
在idea中执行上面操作hdfs程序后,可以在hdfs中创建文件,但是不能向文件中写入内容,文件在创建时是hadoop用户并可指定文件权限为777(依然报错)
本帖最后由 s060403072 于 2018-7-17 16:14 编辑
进入Hadoop,看能否创建并写入文件。看下hdfs-site.xml的权限是否允许远程连接。
在 hdfs-site.xml 总添加参数:
<property>
<name>dfs.permissions</name>
<value>false</value>
</property>
</configuration>
首先要感谢你回帖,谢谢!
<property><name>dfs.permissions</name><value>false</value></property>
已经设置了忽略权限,可以在hdfs中创建文件,但还是不能写入信息
目录权限是755,被这个问题卡主一天多了,定位不到错误的关键点
谢谢你!!!
枫枫飒飒 发表于 2018-7-17 17:17
首先要感谢你回帖,谢谢!
dfs.permissionsfalse
已经设置了忽略权限,可以在hdfs中创建文件,但还是不能 ...
新创建的文件权限查看了吗?非Hadoop用户,是否可以创建。最好通过Hadoop用户,写数据试试
第一次发帖碰到你给我回复,万分感谢,问题已解决,因为集群设置了地址映射关系,本地访问集群的时候不能通过内网访问,在程序中添加一个配置就好了
Configuration conf = new Configuration();//设置通过域名访问datanodeconf.set("dfs.client.use.datanode.hostname", "true");
这样就可以访问了,也是在网上看的帖子,找了好久碰到的,感谢你!!!参考网址如下:
https://www.cnblogs.com/krcys/p/9146329.html
页:
[1]