HDFS—configuration

org.apache.hadoop.conf      提供访问配置文件的借口

配置文件是 name/value 的XML 文件,通常每一个元素都是以<code>String</code> 或者 {@link Path} 的方式给出的,如果是以前者的方式给出的,则会配合类路径来检查这个文件,如果是后者方式给出的,则直接检查对应的文件,比如有下面的定义:

 1: <property>
 2:     <name>basedir</name>
 3:     <value>/user/{user.name}</value>
 4: </property>
 5:
 6: <property>
 7:     <name>tempdir</name>
 8:     <value>{basedir}/tmp</value>
 9: </property>

当有conf.get(“tempdir”) 这样的调用时,{basedir} 被解析为配置的另一个属性,同样{user.name}最终也被解析为系统中具有这个名称的值。

HDFS—Protocol

core 文件夹下有个versionProtocol 是所有使用Hadoop RPC 的父类。它只具有一个获取版本的方法。

ClientDatanodeProtocol、InterDatanodeProtocol、ClientProtocol、DatanodeProtocol 和 NamenodeProtocol 是他们的子类。关系如下:

他们在Client、Namenode 和 Datanode 三方的关系如下图:

在hdfs protocol 下是一些公用的Protocol,UML 如下(没有包括namenode 内的protocol):

NamenodeProtocol

InterDatanodeProtocol

DatanodeProtocol

ClientProtocol(最复杂重要,实现了客户端操作名字空间的接口)

ClientDatanodeProtocol

最后附上namenode 启动的流程