在上一篇博文Hadoop源码分析之FileSystem中分析了org.apache.hadoop.fs.FileSystem这个类,作为FileSystem的子类,org.apache.hadoop.hdfs.DistributedFileSystem是Hadoop抽象文件系统的一个具体文件系统,当以hdfs模式通过FileSystem.get()获取具体文件系统时,返回一个DistributedFileSystem对象。对HDFS的用户来说,DistributedFileSystem就代表了Hadoop分布式文件系统,用户只要操作DistributedFileSystem的对象来进行文件目录的建立、数据的存取操作,其他的都由DistributedFileSystem来完成,所以它为我们提供了一个HDFS的界面。但是在HDFS内部,DistributedFileSystem只是封装了HDFS客户端的一系列功能,与服务器端的交互由HDFS的客户端(DFSClient)去完成。
HDFS的体系结构
HDFS是Hadoop Distributed File System的缩写,作为一个分布式文件系统,它是由多台机器组成的集群,所以HDFS上的文件是以一定的格式分布在这个集群的机器上面,如何来组织这个集群,文件如何分布呢?更多具体的情况可以参考Google的GFS的论文(英文版:http://pan.baidu.com/s/1F0nlb,中文版:http://pan.baidu.com/s/1hArIL),HDFS是GFS的一个开源实现。
HDFS主要由一下几