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是否不同?
答案 0 :(得分:0)
netstat
输出表明它只在localhost上侦听(::ffff:127.0.0.1:8020
是localhost上的端口8020)。您可以编辑服务配置,其中必须有一个用于侦听的接口/ IP的条目。在那里,您可以将localhost
/ 127.0.0.1
更改为外部IP。对于许多服务,您可以使用0.0.0.0
表示它应该监听所有服务。