Hadoop 之 NameNode 元数据原理

在对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。例如如下:
<property>
<name>fs.checkpoint.period</name>
<value>3600</value>
<description>The number of seconds between two periodic checkpoints.
</description>
</property>

<property>
<name>fs.checkpoint.size</name>
<value>67108864</value>
<description>The size of the current edit log (in bytes) that triggers
a periodic checkpoint even if the fs.checkpoint.period hasn‘t expired.
</description>
</property>

时间: 2024-10-09 11:41:27

Hadoop 之 NameNode 元数据原理的相关文章

Hadoop NameNode元数据相关文件目录解析

在<Hadoop NameNode元数据相关文件目录解析>文章中提到NameNode的$dfs.namenode.name.dir/current/文件夹的几个文件: 1 current/ 2 |-- VERSION 3 |-- edits_* 4 |-- fsimage_0000000000008547077 5 |-- fsimage_0000000000008547077.md5 6 `-- seen_txid 其中存在大量的以edits开头的文件和少量的以fsimage开头的文件.那么

Hadoop介绍-4.Hadoop中NameNode、DataNode、Secondary、NameNode、JobTracker TaskTracker

Hadoop是一个能够对大量数据进行分布式处理的软体框架,实现了Google的MapReduce编程模型和框架,能够把应用程式分割成许多的 小的工作单元,并把这些单元放到任何集群节点上执行.在MapReduce中,一个准备提交执行的应用程式称为「作业(job)」,而从一个作业划分出 得.运行于各个计算节点的工作单元称为「任务(task)」.此外,Hadoop提供的分布式文件系统(HDFS)主要负责各个节点的数据存储,并实现了 高吞吐率的数据读写. 在分布式存储和分布式计算方面,Hadoop都是用

Hadoop数据管理介绍及原理分析

Hadoop数据管理介绍及原理分析 最近2014大数据会议正如火如荼的进行着,Hadoop之父Doug Cutting也被邀参加,我有幸听了他的演讲并获得亲笔签名书一本,发现他竟然是左手写字,当然这个他解释为个人习惯问题,也是,外国人左手写字的为数不少,在中国,左撇子在小时候的父母眼中就是“异类”,早早的被矫正过来.废话不多说了,接下来介绍Hadoop的数据管理. Hadoop的数据管理,主要包括Hadoop的分布式文件系统HDFS.分布式数据库HBase和数据仓库工具Hive. HDFS的数据

hadoop出现namenode running as process 18472. Stop it first.

hadoop出现namenode running as process 18472. Stop it first.等等,类似的出现了好几个. namenode running as process 32972. Stop it first. 127.0.0.1: ssh: connect to host 127.0.0.1 port 22: No error 127.0.0.1: ssh: connect to host 127.0.0.1 port 22: No error jobtracke

hadoop的NAMENODE的管理机制,工作机制和DATANODE的工作原理

1:分布式文件系统(Distributed File System): (1):数据量越来越多,在一个操作系统管辖的范围存不下了,那么就分配到更多的操作系统管理的磁盘中,但是不方便管理和维护,因此迫切需要一种系统来管理多台机器上的文件,这就是分布式文件管理系统 .(2):是一种允许文件通过网络在多台主机上分享的文件系统,可让多机器上的多用户分享文件和存储空间.(3):通透性.让实际上是通过网络来访问文件的动作,由程序与用户看来,就像是访问本地的磁盘一般.(4):容错.即使系统中有某些节点脱机,整

Namenode HA原理详解

社区hadoop2.2.0 release版本开始支持NameNode的HA,本文将详细描述NameNode HA内部的设计与实现. 原文见 http://xiguada.org/namenode-ha-principle/ 为什么要Namenode HA? 1.NameNode High Availability即高可用. 2.NameNode 很重要,挂掉会导致存储停止服务,无法进行数据的读写,基于此NameNode的计算(MR,Hive等)也无法完成. Namenode HA 如何实现,关

Hadoop 2.0工作原理学习

1 HDFS简介 1.1 Hadoop 2.0介绍 Hadoop是Apache的一个分布式系统基础架构,可以为海量数据提供存储和计算.Hadoop 2.0即第二代Hadoop系统,其框架最核心的设计是HDFS.MapReduce和YARN.其中,HDFS为海量数据提供存储,MapReduce用于分布式计算,YARN用于进行资源管理. Hadoop 1.0和Hadoop 2.0的结构对比: Hadoop 2.0的主要改进有: 1.通过YARN实现资源的调度与管理,从而使Hadoop 2.0可以运行

hadoop中 namenode的持久化

一.为什么namenode持久化 namenode通过内存存储hdfs集群的元数据(目录结构 文件信息 块对应关系),如果内存出现问题,那么会数据丢失,需要通过持久化,把内存中的数据定期的存储在硬盘中,进而保证namenode的数据安全. 二.持久化的原理 1.FSImage   (某一时刻  namenode镜像数据) 默认存储位置 /opt/install/hadoop-2.5.2/data/tmp/dfs/name 2.EditsLog  (某一时刻后的,写日志操作) FSImage   

Hadoop之MapReduce工作原理

Hadoop由两部分组成,分别是分布式文件系统HDFS和分布式计算框架MapReduce.其中,分布式文件系统HDFS主要用于大规模数据的分布式存储,而MapReduce则构建在分布式文件系统上,对于存储在分布式文件系统的数据进行分布式计算. 1  MapReduce设计目标 HadoopMapReduce诞生于搜索领域,主要解决搜索引擎面临的海量数据处理扩展性差的问题.它的实现很大程度上借鉴了Google MapReduce的设计思想,包括简化编程接口.提高系统容错性等.总结HadoopMap