分享

eclipse运行出现 org.apache.hadoop.net.ConnectTimeoutException 求大牛指导。

4429674 发表于 2015-9-30 16:19:49 [显示全部楼层] 回帖奖励 阅读模式 关闭右栏 5 43535
HA模式下,eclipse如何连接到hdfs。main方法报以下错误:

Exception in thread "main" org.apache.hadoop.net.ConnectTimeoutException: Call From xx.xx.xx.xx(本地IP) to cnsz032696.app.paic.com.cn:9000 failed on socket timeout exception: org.apache.hadoop.net.ConnectTimeoutException: 20000 millis timeout while waiting for channel to be ready for connect. ch : java.nio.channels.SocketChannel[connection-pending remote=xx.xx.xx.xx(namenode地址)]; For more details see:  http://wiki.apache.org/hadoop/SocketTimeout
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
        at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
        at java.lang.reflect.Constructor.newInstance(Constructor.java:526)
        at org.apache.hadoop.net.NetUtils.wrapWithMessage(NetUtils.java:791)
        at org.apache.hadoop.net.NetUtils.wrapException(NetUtils.java:750)
        at org.apache.hadoop.ipc.Client.call(Client.java:1472)
        at org.apache.hadoop.ipc.Client.call(Client.java:1399)
        at org.apache.hadoop.ipc.ProtobufRpcEngine$Invoker.invoke(ProtobufRpcEngine.java:232)
        at com.sun.proxy.$Proxy7.getFileInfo(Unknown Source)
        at org.apache.hadoop.hdfs.protocolPB.ClientNamenodeProtocolTranslatorPB.getFileInfo(ClientNamenodeProtocolTranslatorPB.java:752)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:606)
        at org.apache.hadoop.io.retry.RetryInvocationHandler.invokeMethod(RetryInvocationHandler.java:187)
        at org.apache.hadoop.io.retry.RetryInvocationHandler.invoke(RetryInvocationHandler.java:102)
        at com.sun.proxy.$Proxy8.getFileInfo(Unknown Source)
        at org.apache.hadoop.hdfs.DFSClient.getFileInfo(DFSClient.java:1982)
        at org.apache.hadoop.hdfs.DistributedFileSystem$18.doCall(DistributedFileSystem.java:1128)
        at org.apache.hadoop.hdfs.DistributedFileSystem$18.doCall(DistributedFileSystem.java:1124)
        at org.apache.hadoop.fs.FileSystemLinkResolver.resolve(FileSystemLinkResolver.java:81)
        at org.apache.hadoop.hdfs.DistributedFileSystem.getFileStatus(DistributedFileSystem.java:1124)
        at org.apache.hadoop.fs.FileSystem.exists(FileSystem.java:1400)
        at test.lx.Test.readHDFSFile(Test.java:69)
        at test.lx.Test.main(Test.java:17)
Caused by: org.apache.hadoop.net.ConnectTimeoutException: 20000 millis timeout while waiting for channel to be ready for connect. ch : java.nio.channels.SocketChannel[connection-pending remote=xx.xx.xx.xx(namenode地址)]
        at org.apache.hadoop.net.NetUtils.connect(NetUtils.java:533)
        at org.apache.hadoop.net.NetUtils.connect(NetUtils.java:494)
        at org.apache.hadoop.ipc.Client$Connection.setupConnection(Client.java:607)
        at org.apache.hadoop.ipc.Client$Connection.setupIOstreams(Client.java:705)
        at org.apache.hadoop.ipc.Client$Connection.access$2800(Client.java:368)
        at org.apache.hadoop.ipc.Client.getConnection(Client.java:1521)
        at org.apache.hadoop.ipc.Client.call(Client.java:1438)
        ... 19 more

已有(5)人评论

跳转到指定楼层
4429674 发表于 2015-9-30 16:24:42
以下是连接代码:
public static void main(String[] args) {
  Configuration conf = new Configuration();
  conf.set("fs.defaultFS", "hdfs://hadoop2cluster");
  conf.set("dfs.nameservices", "hadoop2cluster");
  conf.set("dfs.ha.namenodes.hadoop2cluster", "nn1,nn2");
  conf.set("dfs.namenode.rpc-address.hadoop2cluster.nn1", "10.0.1.165:8020");
  conf.set("dfs.namenode.rpc-address.hadoop2cluster.nn2", "10.0.1.166:8020");
  conf.set("dfs.client.failover.proxy.provider.hadoop2cluster",        "org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider");
  FileSystem fs = null;
  try {
     fs = FileSystem.get(conf);
     FileStatus[] list = fs.listStatus(new Path("/"));
     for (FileStatus file : list) {
       System.out.println(file.getPath().getName());
      }
  } catch (IOException e) {
     e.printStackTrace();
  } finally{
      try {
        fs.close();
      } catch (IOException e) {
        e.printStackTrace();
      }
  }
}   求大家帮忙看看啦!我也是刚刚接触hadoop2.0!
回复

使用道具 举报

arsenduan 发表于 2015-10-1 19:04:10
4429674 发表于 2015-9-30 16:24
以下是连接代码:
public static void main(String[] args) {
  Configuration conf = new Configuration ...

cnsz032696.app.paic.com.cn:9000
程序里使用的是8020

回复

使用道具 举报

4429674 发表于 2015-10-2 08:55:15
arsenduan 发表于 2015-10-1 19:04
cnsz032696.app.paic.com.cn:9000
程序里使用的是8020

不好意思,因为当时太急了!所以把没修改过的法上去了,但是我敢保证,上面的东西我都修改过了(就是你说的IP和端口号这些),而且核对了好多次,但是还是报这个错!
回复

使用道具 举报

NEOGX 发表于 2015-10-12 19:56:17
4429674 发表于 2015-10-2 08:55
不好意思,因为当时太急了!所以把没修改过的法上去了,但是我敢保证,上面的东西我都修改过了(就是你说的IP ...

敢问楼主,上面代码操作配置文件,是从哪个地方学到的,还是自己琢磨的
回复

使用道具 举报

4429674 发表于 2015-10-13 11:31:32
NEOGX 发表于 2015-10-12 19:56
敢问楼主,上面代码操作配置文件,是从哪个地方学到的,还是自己琢磨的

网上找的资料,怎么了?不对么?
我换了很多种方式了,都不对!我现在把其他的都省略了!直接就剩这条了: conf.set("fs.defaultFS", "hdfs://xx.xx.xx.xxx:9000");
IP是我用HDFS名称PING出来的.!但是还是报上面的错,!
除非我把这句也省略的话,它就报"未找到该文件的错!"
回复

使用道具 举报

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

本版积分规则

关闭

推荐上一条 /2 下一条