码迷,mamicode.com
首页 > 其他好文 > 详细

NN和2NN工作机制

时间:2019-11-27 01:01:07      阅读:82      评论:0      收藏:0      [点我收藏+]

标签:java   发送   工作   日志文件   标记   拷贝   一个   客户端   int   

一、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工作机制

标签:java   发送   工作   日志文件   标记   拷贝   一个   客户端   int   

原文地址:https://www.cnblogs.com/byronzhang/p/11939316.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!