Hadoop-0.20.0源代码分析(04)

本文深入分析了Hadoop中两个重要的文件系统实现:FilterFileSystem和RawLocalFileSystem。FilterFileSystem作为抽象类的扩展,提供基本功能,而RawLocalFileSystem是本地文件系统的具体实现,涉及文件读写、跟踪统计和本地路径处理。RawLocalFileSystem的内部类如TrackingFileInputStream、LocalFSFileInputStream和LocalFSFileOutputStream分别用于文件输入输出和校验。此外,ChecksumFileSystem和HarFileSystem也进行了简单介绍。
摘要由CSDN通过智能技术生成

前面,分析了org.apache.hadoop.fs.Filesystem抽象类,我们已经了解到,要实现一个最基本的文件系统都需要包含哪些要点。下面具体到某个实现Filesystem的具体实现类,基于该抽象类Filesystem派生的类的继承关系:

 

? extends  FileSystem

 

下面分析FileSystem类的两个直接子类FilterFileSystem与RawLocalFileSystem的实现:

  • FilterFileSystem类

这里,首先分析FileSystem抽象类的子类org.apache.hadoop.fs.FilterFileSystem类,它是一个文件系统的实现类,该文件系统包含了一些其他的Filesystem文件系统,并以这些Filesystem文件系统作为基本的文件系统,可能用来转换数据或者提供附加功能。

该类主要是在其内部定义了一个Filesystem属性:

其实现了基类Filesystem的全部方法,是通过fs直接调用Filesystem抽象类中的方法达到的,似乎并没有增加任何其它的功能,但是可以作为一个具有最基本功能的文件系统。

  • RawLocalFileSystem类

RawLocalFileSystem类是实现了FileSystem的API的一个原生本地文件系统,它的属性如下所示:

workingDir在该类的构造方法中,通过获取系统的属性“user.dir”属性初始化的:

该类中包含了3个与文件读写相关的内部类,分别为:

TrackingFileInputStream类通过继承自基类FileSystem类的Statistics statistics属性,来跟踪文件系统中数据流动。

LocalFSFileInputStream类包装了一个FileInputStream流属性,通过构造方法构造一个TrackingFileInputStream来完成输入流的相关操作。

LocalFSFileOutputStream类包装了一个FileOutputStream流属性,以来FileOutputStream定义的操作来实现对文件系统中的输出流的操作。该类还实现了org.apache.hadoop.fs.Syncable接口,使得该文件输出流类能够实现并调用该接口定义的sync()方法,实现强制对基本设备的缓冲区执行同步操作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值