hadoop的文件系统
2016-01-11 09:13
225 查看
hadoop抽象了文件系统,它可以整合很多的文件系统。
FileSystem就是hadoop文件系统的抽象类。里面包含了对文件系统进行可操作的接口,比如创建目录,创建文件,读取文件,删除文件。。。
下面来看看它可以与哪些文件系统进行整合,直接查看FileSystem的子类,如下图
其中有些文件系统我也没听说过,更谈不上了解了
。只挑几个说下
1、DistributedFileSystem 这个就是我们经常说的hdfs,hadoop分布式文件系统
2、RawLocalFileSystem 没有校验和的本地文件系统 。关于校验和 我现在的理解就是 它是一种验证文件是否完整的一种机制,如果由于硬盘损坏导致文件部分数据丢失,那通过校验和 的比较久可以判断出来
3、LocalFileSystem 带校验和的本地文件系统
4、WebHdfsFileSystem 这个我现在是这样理解的:它其实就是在DistributedFileSystem 上套了一个壳子,使可以通过http/https来访问hdfs文件系统。启动nodeManager时,会启动一个内嵌的服务器,默认启动端口是50070,当我们通过浏览器访问hdfs的文件系统的时候,其实就是使用的WebHdfsFileSystem
那如何获取FileSystem呢
FileSystem提供了3个静态方法来获取特定的文件系统
FileSystem get(Configuration conf);
FileSystem get(URI uri,Configuration conf);
FileSystem get(,URI uri,Configuration conf,String user);
第二个方法会根据uri的schema 来获取对应的文件系统。看了下源码系统会预加载一些文件系统,代码如下
private static void loadFileSystems() {
synchronized (FileSystem.class) {
if (!FILE_SYSTEMS_LOADED) {
ServiceLoader<FileSystem> serviceLoader = ServiceLoader.load(FileSystem.class);
for (FileSystem fs : serviceLoader) {
SERVICE_FILE_SYSTEMS.put(fs.getScheme(), fs.getClass());
}
FILE_SYSTEMS_LOADED = true;
}
}
}但是跟踪了serviceLoader,却没看到如何加载FileSystem的
,纠结.......
FileSystem就是hadoop文件系统的抽象类。里面包含了对文件系统进行可操作的接口,比如创建目录,创建文件,读取文件,删除文件。。。
下面来看看它可以与哪些文件系统进行整合,直接查看FileSystem的子类,如下图
其中有些文件系统我也没听说过,更谈不上了解了
。只挑几个说下
1、DistributedFileSystem 这个就是我们经常说的hdfs,hadoop分布式文件系统
2、RawLocalFileSystem 没有校验和的本地文件系统 。关于校验和 我现在的理解就是 它是一种验证文件是否完整的一种机制,如果由于硬盘损坏导致文件部分数据丢失,那通过校验和 的比较久可以判断出来
3、LocalFileSystem 带校验和的本地文件系统
4、WebHdfsFileSystem 这个我现在是这样理解的:它其实就是在DistributedFileSystem 上套了一个壳子,使可以通过http/https来访问hdfs文件系统。启动nodeManager时,会启动一个内嵌的服务器,默认启动端口是50070,当我们通过浏览器访问hdfs的文件系统的时候,其实就是使用的WebHdfsFileSystem
那如何获取FileSystem呢
FileSystem提供了3个静态方法来获取特定的文件系统
FileSystem get(Configuration conf);
FileSystem get(URI uri,Configuration conf);
FileSystem get(,URI uri,Configuration conf,String user);
第二个方法会根据uri的schema 来获取对应的文件系统。看了下源码系统会预加载一些文件系统,代码如下
private static void loadFileSystems() {
synchronized (FileSystem.class) {
if (!FILE_SYSTEMS_LOADED) {
ServiceLoader<FileSystem> serviceLoader = ServiceLoader.load(FileSystem.class);
for (FileSystem fs : serviceLoader) {
SERVICE_FILE_SYSTEMS.put(fs.getScheme(), fs.getClass());
}
FILE_SYSTEMS_LOADED = true;
}
}
}但是跟踪了serviceLoader,却没看到如何加载FileSystem的
,纠结.......
相关文章推荐
- Hadoop RPC
- linux查找僵尸进程(zombie进程
- CentOS 7部署OpenStack(8)―创建第一台虚拟机
- CentOS 7部署OpenStack(7)―部署Newtron(计算节点)
- CentOS 7部署OpenStack(6)―部署Newtron(控制节点)
- CentOS 7部署OpenStack(5)―部署Nova计算节点
- CentOS 7部署OpenStack(4)―部署Nova控制节点
- CentOS 7部署OpenStack(3)―部署Glance
- CentOS 7部署OpenStack(2)―安装keystone服务
- WPF INotifyPropertyChanged接口
- CentOS 7部署OpenStack(1)-―准备基础环境
- 分布式系统架构
- Linux进程间通信
- LeetCode Expression Add Operators
- apache中301和403优先级
- Linux下snmp常用的OID,用做服务器监控
- Linux下snmp常用的OID,用做服务器监控
- apache用户认证和静态缓存疑惑
- Facebook POP 进阶指南
- [leetcode] 138. Copy List with Random Pointer 解题报告