【问题标题】:Get hadoop configuration in Java util在 Java util 中获取 hadoop 配置
【发布时间】:2015-07-22 15:46:03
【问题描述】:

我正在编写一个需要访问 DFS 的 Java 实用程序,因此我需要一个 Configuration 对象。 当我简单地使用

Configuration conf = new Configuration()

它似乎没有找到 DFS,只是使用本地文件系统;打印

fs.getHomeDirectory()

给出我的本地主目录。我试过添加 core-site.xml、mapred-site.xml、yarn-site.xml 和 hdfs-site.xml 到配置作为资源,但它不会改变任何东西。我需要做什么才能让它获取 HDFS 设置?

感谢阅读

【问题讨论】:

    标签: hadoop hdfs


    【解决方案1】:

    它指向本地文件系统的原因是core-site.xmlhdfs-site.xml 没有正确添加。下面的代码 sn -p 会帮助你。

    Configuration conf = new Configuration();
    conf.addResource(new Path("file:///etc/hadoop/conf/core-site.xml")); // Replace with actual path
    conf.addResource(new Path("file:///etc/hadoop/conf/hdfs-site.xml")); // Replace with actual path
    
    Path pt = new Path("."); // HDFS Path
    FileSystem fs = pt.getFileSystem(conf);
    
    System.out.println("Home directory :"+fs.getHomeDirectory());
    

    更新:

    上面的选项应该有效,配置文件或路径中似乎有些问题。你有另一个选择,而不是使用 addResource 方法添加配置文件,使用 set 方法。打开您的 core-site.xml 文件并找到 fs.defaultFS 的值。使用 set 方法而不是 addResource 方法。

    conf.set("fs.defaultFS","hdfs://<Namenode-Host>:<Port>");  // Refer you core-site.xml file and replace <Namenode-Host> and <Port> with your cluster namenode and Port (default port number should be `8020`). 
    

    【讨论】:

    • 我正在这样做,但没有将'file:///'放在开头。我现在已经添加了,但它仍然无法访问 HDFS。配置文件的路径绝对正确。
    • 请查看更新后的答案。第一个选项应该有效。尝试第二个选项。
    【解决方案2】:

    要访问文件系统,您必须使用如下所述的配置和文件系统

    1. 获取配置实例
    2. 获取 HDFS 实例

      Configuration configuration = new Configuration();
      
      FileSystem hdfs = FileSystem.get(new URI("hdfs://"+HadoopLocation+":8020"), configuration);
      

    在这种情况下,HadoopLocation 是您拥有 hadoop 服务器的位置(可能是本地主机)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-08-08
      • 2016-07-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-24
      • 2017-04-16
      相关资源
      最近更新 更多