Hadoop服务正在运行。但它说无法连接

时间:2015-02-12 12:30:03

标签: java hadoop

  package org.myorg;

  import java.security.PrivilegedExceptionAction;

  import org.apache.hadoop.conf.*;
  import org.apache.hadoop.security.UserGroupInformation;
  import org.apache.hadoop.fs.Path;
  import org.apache.hadoop.fs.FileSystem;
  import org.apache.hadoop.fs.FileStatus;

  public class Write{

    public static void main(String args[]) {
           try {
                // UserGroupInformation ugi = UserGroupInformation.createRemoteUser("hbase");

                 UserGroupInformation ugi = UserGroupInformation.getLoginUser();

                 ugi.doAs(new PrivilegedExceptionAction<Void>() {
                     public Void run() throws Exception
                     {
                         Configuration conf = new Configuration();
                         conf.set("fs.default.name", "hdfs://10.72.40.XX:8020/user/hbase");

                        //conf.set("hadoop.job.ugi", "hbase");

                         conf.set("hadoop.job.ugi", "root");
                         FileSystem fs = FileSystem.get(conf);

                         fs.createNewFile(new Path("/user/hbase/test"));

                         System.out.println("File Created");
                        return null;
                     }
                 });
               }
          catch(Exception e)
         {
            e.printStackTrace();
         }

 }
}

这是我的java文件。

我的IP是10.72.40.XX

  hostname -i

给我这个ip。

 jps

 Jobtracker, namenode, datanode, tasktracker, secondarynamenode, jps

正在运行。

我使用

编译了这个java程序
 javac -classpath hadoop-core-1.1.2.jar -d Write/ Write.java

使用

创建jar
 jar -cvf Write.jar -C Write/ .

使用

运行此程序
 hadoop-1.2.1/bin/hadoop jar Write.jar org.myorg.Write

它说,

 Retrying 0-9 [10] times

  failed on connection exception: java.net.ConnectException: Connection refused

然后我检查了是否有东西在8020端口监听

 netstat -plten | grep java

 tcp        0      0 ::ffff:127.0.0.1:8020       :::*                        LISTEN      0          55639      15717/java

返回服务正在侦听端口8020。

然后,为了调试目的,我用localhost替换了ip,它成功了。可能是什么问题?

我该如何解决?

对于同一台机器,ip和localhost是否不同?

1 个答案:

答案 0 :(得分:0)

netstat输出表明它只在localhost上侦听(::ffff:127.0.0.1:8020是localhost上的端口8020)。您可以编辑服务配置,其中必须有一个用于侦听的接口/ IP的条目。在那里,您可以将localhost / 127.0.0.1更改为外部IP。对于许多服务,您可以使用0.0.0.0表示它应该监听所有服务。