加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 教程 > 正文

Hadoop 之 NameNode 元数据道理

发布时间:2019-09-25 15:34:41 所属栏目:教程 来源:猫给这儿
导读:在对NameNode节点举办名目化时,挪用了FSImage的saveFSImage()要领和FSEditLog.createEditLogFile()存储当前的元数据。Namenode首要维护两个文件,一个是fsimage,一个是editlog。 fsimage :生涯了最新的元数据搜查点,包括了整个HDFS文件体系的全部目次

在对NameNode节点举办名目化时,挪用了FSImage的saveFSImage()要领和FSEditLog.createEditLogFile()存储当前的元数据。Namenode首要维护两个文件,一个是fsimage,一个是editlog。

fsimage :生涯了最新的元数据搜查点,包括了整个HDFS文件体系的全部目次和文件的信息。对付文件来说包罗了数据块描写信息、修改时刻、会见时刻等;对付目次来说包罗修改时刻、会见权限节制信息(目次所属用户,地址组)等。简朴的说,Fsimage就是在某一时候,整个hdfs 的快照,就是这个时候hdfs上全部的文件块和目次,别离的状态,位于哪些个datanode,各自的权限,各自的副本个数等。

留意:Block的位置信息不会生涯到fsimage,Block生涯在哪个DataNode(由DataNode启动时上报)。

editlog :首要是在NameNode已经启动环境下对HDFS举办的各类更新操纵举办记录,HDFS客户端执行全部的写操纵城市被记录到editlog中。

读取元数据:

启动NameNode节点时,又要从镜像和编辑日记中读取元数据。

写入元数据:

在NameNode运行时会将内存中的元数据信息存储到所指定的文件,即${dfs.name.dir}/current目次下的fsimage文件,另外还会将其它一部门对NameNode变动的日记信息存储到${dfs.name.dir}/current目次下的edits文件中。fsimage文件和edits文件可以确定NameNode节点当前的状态,这样在NameNode节点因为突发缘故起因瓦解时,可以按照这两个文件中的内容规复到节点瓦解前的状态,以是对NameNode节点中内存元数据的每次修改都必需生涯下来。可是假如每次都生涯到fsimage文件中,这样服从就出格低效,以是引入编辑日记文件edits,生涯对对元数据的修改信息,也就是fsimage文件生涯NameNode节点中某一时候内存中的元数据(即目次树),edits生涯这一时候之后的对元数据的变动信息。

SecondaryNameNode:首要由两个浸染,一是镜像备份(不是NN的备份,但可以做备份),二是日记与镜像的按期归并。

  • 第一步:将hdfs更新记录写入一个新的文件——edits.new。
  • 第二步:将fsimage和editlog通过http协议发送至secondary namenode。
  • 第三步:将fsimage与editlog归并,天生一个新的文件——fsimage.ckpt。这步之以是要在secondary namenode中举办,是由于较量耗时,假如在namenode中举办,或导致整个体系卡顿。
  • 第四步:将天生的fsimage.ckpt通过http协议发送至namenode。
  • 第五步:重定名fsimage.ckpt为fsimage,edits.new为edits。
  • 第六步:守候下一次checkpoint触发SecondaryNameNode举办事变,一向这样轮回操纵。

注:checkpoint触发的前提可以在core-site.xml文件中举办设置。fs.checkpoint.period暗示多长时刻记录一次hdfs的镜像。默认是1小时。fs.checkpoint.size暗示一次记录多大的size,默认64M。譬喻如下:

  1. <property>  
  2. <name>fs.checkpoint.period</name>  
  3. <value>3600</value>  
  4. <description>The number of seconds between two periodic checkpoints.  
  5. </description>  
  6. </property> 
  7. <property>  
  8. <name>fs.checkpoint.size</name>  
  9. <value>67108864</value>  
  10. <description>The size of the current edit log (in bytes) that triggers  
  11. a periodic checkpoint even if the fs.checkpoint.period hasn't expired.  
  12. </description>  
  13. </property> 
  1. 客户端上传文件时,namenode起首往edits log写入文件中记录元数据操纵日记。
  2. 客户端开始上传文件,完成后返回乐成信息给namenode,namenode就在内存中写入这次上传操纵新发生的操纵日记。
  3. 每当edits log 写满时,必要将这一段时刻的新的元数据革新到fsimage文件中,就是将edits log 和 fsimage 做归并。

流程图:

Hadoop 之 NameNode 元数据道理

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读