HDFS,即Hadoop Distributed File System,为Hadoop的分布式文件系统。其实除了HDFS外,hadoop还支持其它类型的文件系统,比如FTP、本地文件系统等,而这些文件系统都扩展自抽象基础类FileSystem,该抽象类类提供了丰富的方法用于对文件系统进行操作,比如创建目录、删除文件、重命名等。无论使用的是HDFS还是本地文件系统,或者其它所支持的文件系统,推荐在应用程序使用FileSystem对象引用实际的文件系统,比如FileSystem local= FileSystem.getLocal(new Configuration()),该语句返回LocalFileSystem。FileSystem的类层次关系如下图所示,其中将重点学习红色标记的DistributedFileSystem,该类实现了DFS系统,通过该类用户代码与HDFS交互。
既然Hadoop有这么多支持的文件系统,那么Hadoop是如何使用FileSystem对象引用实际的DistributedFileSystem文件系统的呢,我们将通过源码逐步分析这个创建过程。
为此,我们写一个创建FileSy