在java util中获取hadoop配置

m1m5dgzv  于 2021-05-29  发布在  Hadoop
关注(0)|答案(2)|浏览(413)

我正在编写一个需要访问dfs的java实用程序,所以我需要一个 Configuration 对象。当我用 Configuration conf = new Configuration() 它似乎找不到dfs,只使用本地文件系统;印刷 fs.getHomeDirectory() 提供我的本地主目录。我尝试过将core site.xml、mapred site.xml、yarn site.xml和hdfs-site.xml作为资源添加到配置中,但没有改变任何东西。我需要做什么才能让它获取hdfs设置?
谢谢你的阅读

kuhbmx9i

kuhbmx9i1#

它指向本地文件系统的原因是 core-site.xml 以及 hdfs-site.xml 未正确添加。下面的代码片段将帮助您。

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`).
xsuvu9jc

xsuvu9jc2#

要访问文件系统,您必须使用下面概述的配置和文件系统
获取配置示例
获取hdfs示例

Configuration configuration = new Configuration();

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

在本例中,hadooplocation是您拥有hadoop服务器的位置(可能是localhost)

相关问题