HDFS组件:Name Node(NN)、Secondary Name Node(2NN)
发布时间
阅读量:
阅读量
5.1 NN和2NN工作机制
思考:NameNode节点所管理的元数据具体存储于何处?
首先,我们可以设想一种情况,若将这些元数据保存在NameNode节点的磁盘上,由于频繁需要进行随机访问以及处理来自客户端的请求,这势必会导致性能下降。因此,元数据更适合存储于内存中。然而,若仅依赖内存存储,一旦发生断电等意外情况,所有元数据都将丢失,进而导致整个集群无法正常运行。为了解决这一问题,引入了FsImage文件用于在磁盘上对元数据进行备份。
然而,这种方案也带来了新的挑战。当内存中的元数据发生变化时,如果同时对FsImage进行更新,则会显著降低系统效率;反之如果不更新,则可能导致数据一致性问题。一旦NameNode节点遭遇断电等情况,则可能造成部分数据丢失。为应对这一问题,引入了Edits文件(仅支持追加操作,在性能方面具有优势)。每当有新的元数据被创建或原有元数据发生修改时,在内存中同步更新的同时将变更内容追加至Edits文件中。这样即便NameNode节点发生故障,也可以通过FsImage与Edits文件的合并操作来重建完整的元数据。
不过,在长时间持续向Edits文件写入新内容的情况下,该文件体积可能会变得非常庞大,并影响整体效率;此外,在断电后恢复元数据所需的时间也会相应增加。因此有必要定期执行FsImage与Edits文件的合并操作。如果由NameNod
全部评论 (0)
还没有任何评论哟~
