NameNode上的内存需要Hadoop中的副本

时间:2017-05-02 14:44:35

标签: hadoop hdfs

this Cloudera博文中,在Replication部分,已经解释了复制不会占用NameNode上的内存。但是,我对此持怀疑态度,因为我知道NameNode在主内存中存储有关每个文件及其副本的信息。那么,无论有没有复制,内存需求如何相同?

1 个答案:

答案 0 :(得分:1)

内存消耗取决于你的意思,因为物理内存虚拟内存(我只在这里讨论Namenode)

物理内存而言,Cloudera博客是正确的,因为Datanode负责与Namenode进行通信(例如,在重启后连接时)阻止它维护的内容。 Namenode仅将文件系统结构存储到磁盘(fsimage和edits文件)。

现在谈到虚拟内存的情况略有不同,您可以从源代码中清楚地看到FSNamesystem(负责维护FS结构的组件)在RAM)中,引用了BlockManagerBlockManager本身维护对BlocksMap的引用,根据文档确实保留了具有相应块的数据节点列表。

  

此类维护从块到其元数据的映射。块' S   元数据当前包含它所属的blockCollection和   存储块的datanode。

如果您浏览BlockManager的源代码,则可以清楚地看到BlocksMap的使用地点和位置。

实际上我想到了什么,因为Cloudera家伙在大规模计算方面有经验并且可能测量了影响,这个结构的大小与Namenode必须处理的其他元数据相比并不重要