💡
原文中文,约4900字,阅读约需12分钟。
📝
内容提要
介绍HDFS中NameNode的内存结构,包括Namespace、BlockManager、NetworkTopology和LeaseManager等四大部分,分别管理文件系统的目录树结构、数据块信息、机架拓扑及DataNode信息、文件写操作的互斥同步。详细介绍每个部分的内存结构和数据结构,并解释它们在HDFS中的作用。
🎯
关键要点
- NameNode管理HDFS文件系统的元数据,分为Namespace和Block管理层。
- Namespace管理文件系统的目录树结构和文件与数据块的映射关系,定期Flush到FsImage文件。
- BlocksMap仅在内存中存在,重启时从FsImage恢复Namespace。
- NameNode还维护机架拓扑、DataNode信息、Lease管理和缓存管理等。
- NameNode内存结构分为Namespace、BlockManager、NetworkTopology和其他部分。
- Namespace维护目录树结构及状态变化,BlockManager管理数据块信息及状态变化。
- NetworkTopology维护机架拓扑和DataNode信息,LeaseManager实现文件写操作的互斥同步。
- Namespace和BlockManager占用NameNode大部分内存,其他部分相对较小。
- Namespace保存目录树及每个节点属性,定期Flush到FsImage以便重启时恢复。
- INode数据结构分为INodeDirectory和INodeFile,支持扩展属性和高效读性能。
- BlockManager通过BlocksMap管理数据块信息,使用triplets数组维护Block的元数据。
- BlocksMap使用LightWeightGSet实现,避免rehash带来的性能开销。
- LeaseManager维护文件与Lease、客户端与Lease的对应关系,确保写操作的互斥性。
- Lease机制是时间约束锁,客户端写文件前需申请Lease,确保同一时刻只有一个客户端写操作。
- LeaseManager中维护超时检查机制,处理Lease超时和强制回收逻辑。
➡️