Hadoop获取 FileSystem 实例

简介: Hadoop获取 FileSystem 实例

方式一:通过配置来获取fs对象

在 Java 中要想操作 HDFS,首先要获取一个客户端实例:



```Configurationconf=newConfiguration();
FileSystemfs=FileSystem.get(conf);
```

 因为我们的操作目标是 HDFS,所以这里获取到的 fs 对象应该是 DistributedFileSystem 的实例。


 那么,get 方法是从何处判断具体实例化哪种客户端类呢?

 --从 conf 中的一个参数 `fs.defaultFS` 的配置值判断。


 如果我们的代码中没有指定 `fs.defaultFS`,并且工程 classpath 下也没有给定相应的配置,conf 中的默认值就来自于 hadoop 的 jar 包中的 core-default.xml,默认值为file:///,此时获取的将不是一个 DistributedFileSystem 的实例,而是一个本地文件系统的客户端对象。


 完整示例如下所示:



```packagecom.hongyaa.hdfs;
importjava.io.IOException;
importorg.apache.hadoop.conf.Configuration;
importorg.apache.hadoop.fs.FileSystem;
publicclassHDFSDemo {
publicstaticvoidmain(String[] args) throwsIOException {
Configurationconf=newConfiguration();
//如果我们没有给 conf 设置文件系统,那么 fileSystem 默认获取的是本地文件系统的一个实例//若是我们设置了“fs.defaultFS”参数,这表示获取的是该 URI 的文件系统的实例,就是我们需要的 HDFS 集群的一个 fs 对象conf.set("fs.defaultFS", "hdfs://localhost:9000");
FileSystemfs=FileSystem.get(conf);
System.out.println(fs.getUri());
    }
}
```


方式二:直接获取fs对象

packagecom.xiaowang.hdfs;
importjava.io.IOException;
importjava.net.URI;
importjava.net.URISyntaxException;
importorg.apache.hadoop.conf.Configuration;
importorg.apache.hadoop.fs.FileSystem;
publicclassHDFSDemo {
publicstaticvoidmain(String[] args) throwsInterruptedException, URISyntaxException, IOException {
Configurationconf=newConfiguration();
// 不需要配置“fs.defaultFS”参数,直接传入URI和用户身份,最后一个参数是安装Hadoop集群的用户,我的是“root”FileSystemfs=FileSystem.get(newURI("hdfs://localhost:9000"), conf, "root");
System.out.println(fs.getUri());
    }
}















相关文章
|
6月前
|
存储 分布式计算 Hadoop
Hadoop Distributed File System (HDFS): 概念、功能点及实战
【6月更文挑战第12天】Hadoop Distributed File System (HDFS) 是 Hadoop 生态系统中的核心组件之一。它设计用于在大规模集群环境中存储和管理海量数据,提供高吞吐量的数据访问和容错能力。
671 4
|
7月前
|
存储 分布式计算 资源调度
|
6月前
|
分布式计算 资源调度 Java
Scala+Spark+Hadoop+IDEA实现WordCount单词计数,上传并执行任务(简单实例-下)
Scala+Spark+Hadoop+IDEA实现WordCount单词计数,上传并执行任务(简单实例-下)
67 0
|
6月前
|
分布式计算 Hadoop Scala
Scala +Spark+Hadoop+Zookeeper+IDEA实现WordCount单词计数(简单实例-上)
Scala +Spark+Hadoop+Zookeeper+IDEA实现WordCount单词计数(简单实例-上)
55 0
|
分布式计算 Hadoop Java
hadoop第一个运行实例wordcount
hadoop第一个运行实例wordcount
160 0
|
分布式计算 Hadoop Java
|
存储 机器学习/深度学习 SQL
Hadoop基础-03-HDFS(Hadoop Distributed File System)基本概念
Hadoop基础-03-HDFS(Hadoop Distributed File System)基本概念 14
170 0
Hadoop基础-03-HDFS(Hadoop Distributed File System)基本概念
|
分布式计算 Apache
|
分布式计算 Apache

相关实验场景

更多