分享

连接超时: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(依然报错)




已有(4)人评论

跳转到指定楼层
s060403072 发表于 2018-7-17 16:04:29
本帖最后由 s060403072 于 2018-7-17 16:14 编辑

进入Hadoop,看能否创建并写入文件。看下hdfs-site.xml的权限是否允许远程连接。
在 hdfs-site.xml 总添加参数:
<property>
        <name>dfs.permissions</name>
        <value>false</value>
  </property>  
</configuration>

回复

使用道具 举报

枫枫飒飒 发表于 2018-7-17 17:17:46
首先要感谢你回帖,谢谢!
<property><name>dfs.permissions</name><value>false</value></property>
已经设置了忽略权限,可以在hdfs中创建文件,但还是不能写入信息
目录权限是755,被这个问题卡主一天多了,定位不到错误的关键点
谢谢你!!!
回复

使用道具 举报

s060403072 发表于 2018-7-17 19:11:28
枫枫飒飒 发表于 2018-7-17 17:17
首先要感谢你回帖,谢谢!
dfs.permissionsfalse
已经设置了忽略权限,可以在hdfs中创建文件,但还是不能 ...

新创建的文件权限查看了吗?非Hadoop用户,是否可以创建。最好通过Hadoop用户,写数据试试
回复

使用道具 举报

枫枫飒飒 发表于 2018-7-24 15:53:23
第一次发帖碰到你给我回复,万分感谢,问题已解决,因为集群设置了地址映射关系,本地访问集群的时候不能通过内网访问,在程序中添加一个配置就好了
Configuration conf = new Configuration();//设置通过域名访问datanodeconf.set("dfs.client.use.datanode.hostname", "true");
这样就可以访问了,也是在网上看的帖子,找了好久碰到的,感谢你!!!参考网址如下:
https://www.cnblogs.com/krcys/p/9146329.html
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条