HDFS源码阅读(1)--NameNode实现

INode

INode类在Namenode中代表了文件的树状结构,就是HDFS的Namespace在内存中的抽象映射,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每次启动的时候重建)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值