需要从HDFS集群外部读取hdfs。我偶然发现了WebHdfsFileSystem,尽管我有了这个想法,但我无法使它与网络地址一起工作。例如,只要我使用127.0.0.1或localhost,下面的代码就可以正常工作。但当我使用网络ip地址192.168..。,我得到“重试连接到服务器”的消息,后面跟着ConnectException。
import java.io.IOException;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.hdfs.web.WebHdfsFileSystem;
public class ReadHDFSFile {
public static void main(String[] args) {
Path p = new Path("hdfs://127.0.0.1:9000/user/hduser");
WebHdfsFileSystem web = new WebHdfsFileSystem();
try {
Configuration conf = new Configuration();
conf.set("fs.default.name","hdfs://127.0.0.1:9000/");
web.setConf(conf);
Configuration conf1 = web.getConf();
FileSystem fs = FileSystem.get(web.getConf());
System.out.println(fs.exists(p));
} catch (IOException e) {
e.printStackTrace();
}
}
}我不知道我在这里错过了什么。
发布于 2014-06-23 17:51:37
我有一个在Hadoop2.4上工作的版本。我必须更改与使用常规Hadoop相关的两件事:
hdfs://更改为webhdfs://为我工作的示例代码:
Configuration conf = new Configuration();
String conxUrl = String.format("webhdfs://%s:%s", NAMENODE_IP_ADDR, WEBHDFS_PORT);
conf.set("fs.defaultFS", conxUrl);
FileSystem fs = WebHdfsFileSystem.get(conf);
Path path = new Path("/path/to/my/file");
System.out.println(fs.exists(path));https://stackoverflow.com/questions/19439357
复制相似问题