Hadoop 服务 运行。但是它说无法连接
Hadoop services are running. But it says fails to connect
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
returns 服务正在侦听端口 8020。
然后为了调试,我把ip换成了localhost,成功了。可能是什么问题?
我该如何解决?
同一台机器的ip和localhost是否不同?
netstat
输出表明它只在本地主机上侦听(::ffff:127.0.0.1:8020
是本地主机上的端口 8020)。您可以编辑您的服务配置,其中必须有一个用于它所侦听的 interface/IP 的条目。在那里,您可以将 localhost
/127.0.0.1
更改为外部 IP。对于许多服务,您可以使用 0.0.0.0
来指示它应该监听所有服务。
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
returns 服务正在侦听端口 8020。
然后为了调试,我把ip换成了localhost,成功了。可能是什么问题?
我该如何解决?
同一台机器的ip和localhost是否不同?
netstat
输出表明它只在本地主机上侦听(::ffff:127.0.0.1:8020
是本地主机上的端口 8020)。您可以编辑您的服务配置,其中必须有一个用于它所侦听的 interface/IP 的条目。在那里,您可以将 localhost
/127.0.0.1
更改为外部 IP。对于许多服务,您可以使用 0.0.0.0
来指示它应该监听所有服务。