元数据的分类
按形式分类:内存元数据和元数据文件;它们的存在的位置分别为:内存和磁盘上。其中内存元数据主要是hdfs文件目录的管理;元数据文件则用于持久化存储。
按类型分,元数据主要包括:
1、文件、目录自身的属性信息,例如文件名,目录名,修改信息等。
2、文件记录的信息的存储相关的信息,例如存储块信息,分块情况,副本个数等。
3、记录HDFS的Datanode的信息,用于DataNode的管理。
结合上面的介绍,我们知道对于Datanode的信息我们不需要备份,保证可靠性和可维护性,而文件内容的信息也不需要保证可靠性和可维护性,这个等到namenode format之后,Datanode通过心跳机制就可以形成这些信息。而我们只要保证文件、目录的自身的属性信息就可以了。
而在Hadoop的HDFS的实现的源码我们可以看到在namenode类中构造器中调用了initialize方法,而这个方法加载了namesystem的一个实例,而在namesystem中属性中包含了三个类的对象,分别是FSdirectory、BlockManager、NavigableMap。FSdirectory主要是对应第一类,BlockManager主要对应文件内容的分块信息,所有的文件的分块信息,NavigableMap主要是Datanode的磁盘使用情况等。
内存元数据主要fsimage,而通过checkpoint功能备份的也主要是内存的元数据,我们阅读源码就可以发现这个,具体细节我就不介绍了。
先写到这,如果有什么问题可以留言,一起讨论。