Hadoop文件系统中有一个抽象的文件系统类,HDFS只是其中的一个实现。java抽象类org.apache.hadoop.fs.FileSystem 定义了Hadoop中一个文件系统接口,并且该抽象类有几个具体的实现,例如LocalFileSystem,hdfs.DistributeFileSystem等
虽然我们关注的是HDFS的DistributedFileSystem但还是应该集成FileSystem抽象类,并以此来编写代码,以此来保持不同的文件系统中的可移植性。
相关阅读:
Hadoop HDFS源码学习笔记(一)
更多Hadoop相关信息见Hadoop 专题页面 ?tid=13
从FileSystem类开始入手,发现向上追踪到Configurable接口之后,看到一对set/get函数,其中的参数为Configuration类,而在查看源码的过程中也发现Configuration类无处不在,初学Hadoop的人都知道配置参数是在core-site.xml文件中进行的,所以这个类的目的也就明确了,默认情况下hadoop的Configuration类会按照顺序加载两个文件,文件的路径是通过classpath得到的(这里的classpath是指应用运行的类路径。服务端hadoop的classpath指向的是conf。客户端,classpath就是客户端应用的类路径src):
1、core-default.xml: hadoop的只读文件 位于src/core/文件夹中
2、core-site.xml: 指定hadoop安装过程需要的一些参数配置
xml文件中:资源以xml形式的数据表示,由一系列的键值对组成。资源可以用String或path命名,String-指示hadoop在classpath中查找该资源;Path-指示hadoop在本地文件系统中查找该资源。
关于该类的具体的描述可以查看hadoop的官方的javadoc文档: