首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WebHdfsFileSystem本地ip与网络ip hadoop

WebHdfsFileSystem本地ip与网络ip hadoop
EN

Stack Overflow用户
提问于 2013-10-18 00:02:39
回答 1查看 1K关注 0票数 2

需要从HDFS集群外部读取hdfs。我偶然发现了WebHdfsFileSystem,尽管我有了这个想法,但我无法使它与网络地址一起工作。例如,只要我使用127.0.0.1或localhost,下面的代码就可以正常工作。但当我使用网络ip地址192.168..。,我得到“重试连接到服务器”的消息,后面跟着ConnectException。

代码语言:javascript
复制
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();
        }
    }
}

我不知道我在这里错过了什么。

EN

回答 1

Stack Overflow用户

发布于 2014-06-23 17:51:37

我有一个在Hadoop2.4上工作的版本。我必须更改与使用常规Hadoop相关的两件事:

  • 协议从hdfs://更改为webhdfs://
  • 端口更改为http-端口(在我们的Hortonworks集群上是50070),而不是默认的hdfs端口(也可以称为RPC端口?),在我们的系统上是8020。

为我工作的示例代码:

代码语言:javascript
复制
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));
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19439357

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档