1.什么是元数据
元数据是存储HDFS重要信息的元素
按类型可分为
- 文件、目录自身的属性信息,例如文件名、目录名、修改信息等
- 文件记录的信息的存储相关的信息,例如存储块信息、分块情况、副本个数等。
3.记录HDFS和DataNode的信息,用于DataNode的管理。
按形式可分为:内存元数据和元数据文件两种,分别存储在内存和磁盘。
2.为什么需要元数据的持久化
元数据重要,且使用内存存储,存在安全风险,因此需要持久化操作,规避风险。
3.元数据的持久化操作
- 在HDFS 第一次格式化后,NameNode就会生成fsimage和editslog两个文件。
- SecondaryNamenode 节点定期从NameNode下载fsimage和editslog两个文件。
- 把fsimage和editslog结合成新的fsimage快照文件。
- 替换NameNode的fsimage文件,并将new_editslog重命名为editslog,组成新的fsimage和editslog。
- 为了避免editlog不断增加,secondary namenode会周期性合并fsimage和edits成新的fsimage
- 这样周期性操作,使得NameNode的fsimage和editslog相差一段时间。
1.NameNode和SecondaryNameNode的区别?
- NameNode主要维护两个组件,一个是fsimage一个是editslog.
- fsimage保存了最新的元数据检查点,包含了整个HDFS文件系统的所有目录和文件的信息。对于文件来说包括了数据块描述信息、修改时间、访问时间等;对于目录来说包括修改时间、访问权限控制信息(目录所属用户,所在组)等
- editlog主要是在NameNode已经启动情况下对HDFS进行的各种更新操作进行记录,HDFS客户端执行所有的写操作都会被记录到editlog中。