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