NameNode如何管理元数据:
概述:
1.NameNode通过一些edits(小) 和 fsimage(大)两类文件来管理元数据的
2.edits文件相对较小,操作时相对较快,记录HDFS集群最近一段状态的元数据 阀值:1小时 100w (阀值满会将元数据写入到fsimage文件中形成新的fsimage文件)
3.simage文件相对较大,操作时相对较慢,存储HDFS集群最近状态以外,其他所有的元数据信息(要不断的和edits文件合并,从而形成新的edits文件)
细节:fsimage文件的合并是由SecondaryNameNode实现的,整个过程NameNode不参与
4.开启HDFS集群时,会自动加载fsimage文件 和 最新的edits文件进内存,用于记录元数据,整个过程相当于HDFS的自检,次状态下,HDFS集群会强制进入安全模式,只能读,不能写
流程图:
SecondaryNameNode是如何辅助NameNode管理元数据的:
概述:
1.SecondaryNameNode会间隔60秒,询问一下NameNode edits文件是否满足阀值(1小时,100w次)
2.当满足阀值时,会通知NameNode创建新的edits文件,继续往里面写入元数据
3.根据http协议,从NameNode上把要合并的edits文件和fsimage文件 ,拉入到本地合并
4.将合并后的fsimage文件推送给NameNode,用来替换旧的fsimage文件,旧的fsimage文件不会被立刻删除,当达到一定的阀值时才会被删除
5.对于edits文件和fsimage文件的合并操作,SecondaryNameNode独立完成
6.SecondaryNameNode和NameNode 不会被部署到同一台服务器上,配置几乎一样,SecondaryNameNode的内存稍微大一些
7.紧急情况下:SecondaryNameNode可以恢复NameNode的元数据
流程图:
l