一、fsimage文件和edits log文件
1.1 文件中存储的数据
在HDFS中,fsimage和eidts是NameNode两个非常重要的文件。
- fsimage文件:是HDFS文件系统存于硬盘中的元数据检查点(即全量),里面记录了自最后一次检查点之前HDFS文件系统中所有目录和文件的序列化信息;
- edits log文件:保存了自最后一次检查点之后所有针对HDFS文件系统的操作(即增量),比如:增加文件、重命名文件、删除目录等等。
1.2 文件的作用
在NameNode启动时候,会先将fsimage中的文件系统元数据信息加载到内存,然后根据eidts中的记录将内存中的元数据同步至最新状态;所以,这两个文件一旦损坏或丢失,将导致整个HDFS文件系统不可用。
1.3 文件的合并merge
类似于数据库中的检查点,为了避免edits日志过大(会导致解析加载到内存中会很耗时),需要将fsimage和edits 日志文件合并成新的fsimage文件:
- 冷备份:在Hadoop1.X中,SecondaryNameNode会按照时间阈值(比如24小时)或者edits日志大小阈值(比如1G),周期性的将fsimage和edits的合并,然后将最新的fsimage推送给NameNode;
- 热备份:在Hadoop2.X中采用主从架构,这个动作是由Standby NameNode来完成;一旦Active NameNode挂掉,Standby NameNode会马上顶上;
注意:fsimage和edits log文件是经过了序列化的,无法直接查看。
二、Secondary NameNode:
- HDFS单NameNode节点的情况下(即非高可用HA),Secondary NameNode负责每隔一段时间将旧的fsimage文件和edits log文件merge成新的fsimage并替换,即为NameNode 合并编辑日志edits log,减少 NameNode 启动时间;
-
非实时merge,一旦NameNode挂了,可能会导致元数据丢失;
Secondary NameNode
三、Standby NameNde:
- HDFS主从架构情况下(即高可用HA,生产环境都是用HA的),Active NameNode和Standby NameNode,后者会实时同步前者的fsimage,并将merge后的新fsimage文件替换前者中旧的fsimage文件;
- 实时merge,一旦前者挂了,后者能够马上顶上,不会出现元数据丢失;
具体过程,如图所示:
图2-1. HDFS主从架构
即非HA时,有Secondary NameNode;HA时,有Standby NameNode。
参考:https://blog.csdn.net/qq_15849595/article/details/85039942
网友评论