NN和2NN工作机制

一、NN的工作机制

①作用:负责HDFS上元数据的管理,负责接收和处理客户端的请求,负责和DN通信,执行HDFS上的管理操作

②说明:NN是一个java进程,负责元数据的管理,当NN启动时,需要将HDFS上的所有元数据信息加载到内存中(从磁盘中读取上集群停止时持久化到磁盘中的元数据信息)

③应该避免的:NN在集群中只有一个,负责处理客户端的所有请求,需要在NN工作期间,避免在NN上执行一些耗时的或消耗性能的工作,例如快照备份元数据(生成fsimage文件)。

④管理元数据的机制:

  1)工作期间会产生两个文件一个fsimage文件(元数据的快照文件)和一个edits文件(编辑日志文件)(滚动产生)

  2)fsimage文件:

      1、每次HDFS格式化时都会产生一个空的fsimage文件

      2、每次NN启动时,会先将edits滚动生成一个新的edits.inprogress文件,然后将fsimage文件和edits文件加载到内存中,此时NN内存就有了最新的元数据,然后会将最新的元数据持久化产生一个新的fsimage文件

      3、fsimage文件保存的是文件的块列表信息

  3)edits文件:

      1、客户端对NN发送的元数据的增删改请求都会被记录在edits.inprogress中,如果此时NN挂了,重启后NN会从edits.inrprogress中读取元数据的信息,然后在内存中执行元数据的增删改请求

二、2NN的工作机制

①作用:由于Edits中记录的操作会越来越多,Edits文件会越来越大,导致NN在加载Edits文件时会很慢,所以需要对Edits和fsimage进行合并,所谓合并就是将fsimage和edits都加载到内存中,然后跟据edits中的操作一步步执行,最终形成最新的fsimage。

2NN的作用就是帮助NN来合并Edits和fsimage。

②过程:2NN会首先询问NN是否需要checkpoint(出发checkpoint需要两个条件,一个是设定的时间到了,另一个是Edits中数据写满了)。直接带回NN是否检查结果。

2NN执行checkpoint操作,首先会让NN滚动Edits文件生成一个空的edits.inprogress文件,滚动Edits的目的是为了给Edits文件打标记,以后所有的操作都写入edits.inprogress文件,其他未合并的edits和fsimage会拷贝到2NN中进行合并,生成新的fsimage.checkpoint文件,然后将fsimage.checkpoint文件拷贝给NN,替换掉旧的fsimage文件

posted @ 2019-11-26 23:58  ByronZhang1997  阅读(1232)  评论(0编辑  收藏  举报