我的示例 java 应用程序是从一个 hadoop 集群中读取数据并将其存储在另一个 hadoop 集群中(比如 A、B 各)。
这是从 A 读取数据的示例代码。
StringBuilder result=new StringBuilder();
Configuration conf = new Configuration();
FileSystem fs = FileSystem.get(conf);
FileStatus[] status=fs.listStatus(new Path("/result/test1"));
for(FileStatus file:status){
System.out.println(file.getPath().toString());
if(file.getPath().toString().contains("part")){
FSDataInputStream inputStream=fs.open(file.getPath());
String inputString;
while((inputString=inputStream.readLine())!=null){
result.append(inputString);
}
}
}
下面的代码是访问 B
conf.set("fs.default.name", "hdfs://10.101.51.221:9000");
conf.set("mapred.job.tracker", "hdfs://10.101.51.221:9001");
fs=FileSystem.get(conf);
这个示例 java 应用程序在其构建路径中包含 A 的 hadoop/conf/* 以访问 A,我认为我也可以通过更改 fs.default.name 和 mapred.job.tracker 来访问 B,但它不起作用。错误信息就像
13/08/21 14:41:08 INFO ipc.Client: Retrying connect to server: Already tried 0 time(s).
...
13/08/21 14:41:26 INFO ipc.Client: Retrying connect to server: Already tried 9 time(s).
Exception in thread "main" java.net.ConnectException: Call to server failed on connection exception: java.net.ConnectException: Connection refused: no further information
任何有关此问题的提示将不胜感激