NN和2NN工作机制

Posted byronzhang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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文件

以上是关于NN和2NN工作机制的主要内容,如果未能解决你的问题,请参考以下文章

Hadoop--05---HDFS_03----NameNode 和2NN DataNode

hadoop之各组件原理图详解

NameNode和SecondaryNameNode

Hadoop之HDFS(NameNode和SecondaryNameNode)(面试开发重点)

大数据面试宝典 第二篇 HDFS 面试题

HDFS成员的工作机制