[HDFS学习笔记] NN 和 2NN机制

问:首先思考元数据HDFS的元数据会存在哪里?
答:内存

问:那如果断电了怎么办?
答: 为了避免断电等问题造成数据丢失,HDFS还会把元数据的镜像文件存放在磁盘,叫做FSImage.但元数据会发生不停的添加/更新操作.不停的IO非常影响效率,因此同时使用EditLog 用来保存HDFS运行开始以来的对元数据的各种操作,因此 FSImage + EditLog 即为此时内存中的元数据一致。

问: 如果EditLog过大了怎么办?
答: 此时需要清理Editlog 同时更新磁盘上的FSImage。于是有了2NN(Secondary NameNode)

具体工作机制如下:
微信截图_20200224150435.png

HDFS启动时 通过加载本地的Editlog和FSImage并合并到内存中去
运行过程中Editlog更新不断增大
当1)定时时间到了 2)Editlog满了 就会触发2NN 的Checkpoint机制

  1. NN 首先滚动正在写的Editlog1,即 停止继续写入原来的Editlog1 而是把新来的操作写入新建的Editlog2,把Editlog1和FSImage拷贝到2N
  2. 在2NN加载Editlog1和FSImage到内存并合并,生成新的FSImage.ckpt
  3. 把新的FSImage.ckpt拷贝回NN,并重命名为FSImage

你可能感兴趣的:(hdfs)