请说明HDFS中元数据的存放位置,并阐述其持久化和一致性机制是如何实现的?
考察说明
考察对HDFS架构中元数据管理及一致性保障机制的理解
回答思路
- 【回答框架 1】HDFS的元数据包括文件系统的命名空间(目录、文件名、权限)和数据块到DataNode的映射,主要存储在NameNode的内存中,同时以FsImage和EditLog的形式持久化到磁盘。
- 【回答框架 2】持久性保障:NameNode将元数据更改以追加方式写入EditLog,定期合并生成新的FsImage,并通过SecondaryNameNode或Checkpoint过程合并EditLog和FsImage,以防止日志过大和元数据丢失。
- 【回答框架 3】一致性保障:通过EditLog的写操作顺序记录,保证元数据操作的串行化;同时数据块的一致性通过DataNode的块报告和心跳机制来维护,NameNode根据块报告更新映射。
- 【关键点 1】元数据主要存储在NameNode内存中,磁盘上有FsImage和EditLog。
- 【关键点 2】EditLog追加写入,定期Checkpoint合并,SecondaryNameNode辅助。
- 【关键点 3】一致性通过操作日志顺序化和块报告机制实现。
- 【易错点 1】不能简单认为NameNode有单点故障,需要HA或联邦机制。
- 【易错点 2】EditLog的同步刷盘策略需权衡性能与持久性,但机制上未保证同步刷盘。
- 【易错点 3】SecondaryNameNode并非热备,仅用于Checkpoint。