INode
INode类在Namenode中代表了文件的树状结构,就是HDFS的Namespace在内存中的抽象映射,INode是一个抽象类,派生类
INodeDirectory代表HDFS中的目录,INodeFile代表HDFS中的文件。INode定义了文件和目录的一些共用的字段。
INodeDirectory代表HDFS中的目录,INodeFile代表HDFS中的文件。INode定义了文件和目录的一些共用的字段。
INode有两个内部类:
PermissionStatusFormat是一个枚举类,主要是根据INode中的permission字段来计算user和group的权限信息。
DirCounts类包装了两个计数器,分别记录NameSpace的使用量和磁盘的使用量。
INode中的permission字段只有updatePermissionStatus()方法可以更改,此方法是同步的。
INodeFile
INodeFile主要有两个属性,header和blocks。header代表文件的头信息,blocks代表组成文件的block列表
INodeDirectory
INodeDirectory主要有children属性。代表目录下的子node列表
INodeDirectoryWithQuota
INodeDirectoryWithQuota用于管理INode的NameSpace和磁盘空间的配额信息和实际占用信息,更新DirCounts的两个属性
FSDirectory
FSDirectory存储文件系统目录的状态。它主要处理对磁盘的读写操作,并记录下相应的变化。它保存了一个当前最新的filename->blockset的列表,并将最新信息更新到磁盘上。
FSNamesystem
FSNamesystem是实际记录HDFS文件系统一些非常重要的信息的类。
1.文件名到blocklist的映射,此映射会被持久化到日志和磁盘中
2.所有有效的block
3.block到机器列表(datanode)的映射,只保存在内存(datanode在启动时向namenode报告其自身node上的block)
4.datanode到block的映射
5.LRU最近发送过心跳的datanode列表
FSImage
FSImage用于对namenode的namespace定期生成对应的检查点和将改变的内容记录到日志
fsimage代表存储系统目录树的文件名称
edits代表目录树上执行的操作日志的文件名称
FSEditLog
FSEditLog用于将NameSpace发生的变化持久化到editlog中
NameSpace指文件系统中的目录树,文件等元数据信息,不包括block信息。
Host2NodesMap
Host2NodesMap保存了从主机到主机上的DataNode的映射,主要负责对集群中的DataNode按照它们所在的主机进行分类管理
在FSNamesystem内部有Host2NodesMap成员变量
NetworkTopology
NetworkTopology代表具有树状网络拓扑结构的计算机集群。数据中心->机架->机器
叶子节点代表DataNode, InnerNode代表不同机架的路由选择
NameNode将DataNode交给NetworkTopology保存之前,已经将DataNode的ip解析成了/*/*/*的格式
DNSToSwitchMapping
DNSToSwitchMapping接口可以由用户实现,只有用户知道网络拓扑中的各个节点的实际距离
HostsFileReader
HostsFileReader用于跟踪哪些DataNode允许连接到NameNode,哪些不允许
NameNode
NameNode类主要控制两个表
1.filename->blocksequence(namespace)(一个文件所对应的Block序列,存放在磁盘)
2.block->machinelist("inodes")(一个Block所在的machine列表,在NameNode每次启动的时候重建)