Blog信息 |
blog名称: 日志总数:1304 评论数量:2242 留言数量:5 访问次数:7590879 建立时间:2006年5月29日 |

| |
[Apache(jakarta)]Hadoop系列-fs包之代码实现 软件技术
lhwork 发表于 2006/12/13 15:33:06 |
在此包中,最重要的是FileSystem抽象类。它定义了文件系统中涉及的一些基本操作,如:create,rename,delete...另外包括
一些分布式文件系统具有的操作:copyFromLocalFile, copyToLocalFile,...类似于Ftp中put和get操作。
LocalFileSystem和DistributedFileSystem,继承于此类,分别实现了本地文件系统和分布式文件系统。
了解了最重要的类之后,看一看它的一系列stream类:
* FSOutputStream
在原有OutputStream基础之上添加了获得文件指针偏移量的getPos方法。可以通过FileSystem的
createRaw获得它的实例。这里存在一个疑问,这个扩展的getPos方法在fs包中没有被使用。如果在其余包中同样没有被使用,那么扩展就显得多
余。
* FSInputStream在原有InputStream基础之上同样添加了getPos方法,同时可以通过
seek方法定位指定的偏移量处。可以通过
FileSystem的openRaw获得它的实例。新添加的getPos和seek方法在FSDataInputStream类中被使用。
* FSDataOutputStream继承于DataOutputStream,包装了FSOutputStream。与DataOutputStream相比,不同之处在于:
1. 添加了getPos方法,它是利用PositonCache记录当前的position
2. 通过Buffer内类对输出进行缓存处理,改进性能
3. 可以构建具有checksum的流,保证数据的正确性
* FSDataInputStram继承于DataInputStream,包装了FSInputStream。与DataInputStream相比,不同之处在于:
1. 添加了seek和getPos方法
2. 通过Buffer内类对输入进行缓存处理,改进性能
3. 可以构建具有checksum的流,保证数据的正确性
另外,为了屏蔽Windows和Unix、Linux在路径处理上存在的差异,实现了Path类,提供了统一的处理方式。
BTW:http://asmallbird.blogspot.com/ |
|
|