-----尚硅谷学习笔记整理
一、NameNode的元数据存储在哪里?
1、NameNode的元数据如果存在内存中,如果断电,会造成数据丢失,所以引入-----FsImage
2、然后如果元数据更新频率过多,效率过低,而且断电依然会造成数据丢失,所以引用----Edit文件(追加效率很高,每当元数据更新,修改元数据)
3、这样,NameNode就必须经常进行FsImage和Edit文件的合并,这样效率过低,所以引用了Secondary NameNode辅助NameNode进行备份机制
二、NameNode的工作机制
1、第一阶段:NameNode启动
1)第一次启动NameNode格式化后,创建Fsimage和Edits文件,如果不是第一次启动,直接加载编辑日志和镜像文件到内存
2)客户端对元数据进行增删改的请求
3)NameNode记录操作日志,更新滚动日志
4)NameNode在内存中对数据进行增删改
2、第二阶段:Secondary NameNode工作
1)Secondary NameNode 询问NameNode是否需要CheckPoint,直接带回NameNode是否检查结果
2)Secondary NameNode 请求执行CheckPoint
3)NameNode 滚动正在写的Edits日志
4)将滚动前的编辑日志和镜像文件拷贝到Secondary NameNode
5)Secondary NameNode 加载编辑日志和镜像文件到内存,并合并
6)生成新的镜像文件Fsimage.chkpoint
7)拷贝fsimage.chkpoint 到NameNode
8)NameNode 将fsimage.chkpoint 重命名成fsimage
三、Fsimage和Edits
1、oiv查看Fsimage命令
hdfs oiv -p 文件类型 -i 镜像文件 -o 转换成文件输出路径
2、oev查看Edits文件
hdfs oev -p 文件类型 -i 编辑日志 -o 转换成文件输出路径
3、CheckPoint时间设置
4、NameNode故障处理机制
1)将Secondary NameNode 文件拷贝到NameNode存储数据的目录
具体步骤:kill掉NameNode进程、删除NameNode存储数据、拷贝Secondary NameNode的数据到NameNode,重启NameNode
2)使用-importCheckpoint选项启动NameNode守护进程,从而将secondary NameNode数据拷贝到Name Node 目录中