Secondary NameNode

  在Hadoop中,有一些命名不好的模块,Secondary NameNode是其中之一。从它的名字上看,它给人的感觉就像是NameNode的备份。但它实际上却不是。HDFS集群有两类节点以管理者和工作者的工作模式运行,namenode就是其中的管理者。它管理着文件系统的命名空间,维护着文件系统树及整棵树的所有文件和目录。这些信息以两个文件的形式保存于内存或者磁盘,这两个文件是:命名空间镜像文件fsimage和编辑日志文件edit logs ,同时namenode也记录着每个文件中各个块所在的数据节点信息。

  

图中有两个文件:

(1)fsimage:文件系统映射文件,也是元数据的镜像文件(磁盘中),存储某段时间namenode内存元数据信息。

(2)edits log:操作日志文件。

这种工作方式的特点:

(1)namenode始终在内存中存储元数据(metedata),使得“读操作”更加快、

(2)有“写请求”时,向edits文件写入日志,成功返回后才修改内存,并向客户端返回。

(3)fsimage文件为metedata的镜像,不会随时同步,与edits合并生成新的fsimage。

从以上特点可以知道,edits文件会在集群运行的过程中不断增多,占用更多的存储空间,虽然有合并,但是只有在namenode重启时才会进行。并且在实际工作环境很少重启namenode,

这就带来了一下问题:

(1)edits文件不断增大,如何存储和管理?

(2)因为需要合并大量的edits文件生成fsimage,导致namenode重启时间过长。

(3)一旦namenode宕机,用于恢复的fsiamge数据很旧,会造成大量数据的丢失。

Secondary NameNode

上述问题的解决方案就是运行辅助namenode–Secondary
NameNode,为主namenode内存中的文件系统元数据创建检查点,Secondary
NameNode所做的不过是在文件系统中设置一个检查点来帮助NameNode更好的工作。它不是要取代掉NameNode也不是NameNode的备份,

SecondaryNameNode有两个作用,一是镜像备份,二是日志与镜像的定期合并。两个过程同时进行,称为checkpoint(检查点)。

镜像备份的作用:备份fsimage(fsimage是元数据发送检查点时写入文件);

日志与镜像的定期合并的作用:将Namenode中edits日志和fsimage合并,防止如果Namenode节点故障,namenode下次启动的时候,会把fsimage加载到内存中,应用edits log,edits log往往很大,导致操作往往很耗时。(这也是namenode容错的一套机制)

Secondarynamenode工作过程

(1)SecondaryNameNode通知NameNode准备提交edits文件,此时主节点将新的写操作数据记录到一个新的文件edits.new中。

(2)SecondaryNameNode通过HTTP
GET方式获取NameNode的fsimage与edits文件(在SecondaryNameNode的current同级目录下可见到
temp.check-point或者previous-checkpoint目录,这些目录中存储着从namenode拷贝来的镜像文件)。

(3)SecondaryNameNode开始合并获取的上述两个文件,产生一个新的fsimage文件fsimage.ckpt。

(4)SecondaryNameNode用HTTP POST方式发送fsimage.ckpt至NameNode。

(5)NameNode将fsimage.ckpt与edits.new文件分别重命名为fsimage与edits,然后更新fstime,整个checkpoint过程到此结束。

SecondaryNameNode备份由三个参数控制fs.checkpoint.period控制周期(以秒为单位,默认3600秒),fs.checkpoint.size控制日志文件超过多少大小时合并(以字节为单位,默认64M),
dfs.http.address表示http地址,这个参数在SecondaryNameNode为单独节点时需要设置。

从工作过程可以看出,SecondaryNameNode的重要作用是定期通过编辑日志文件合并命名空间镜像,以防止编辑日志文件过大。SecondaryNameNode一般要在另一台机器上运行,因为它需要占用大量的CPU时间与namenode相同容量的内存才可以进行合并操作。它会保存合并后的命名空间镜像的副本,并在namenode发生故障时启用。

原文地址:https://www.cnblogs.com/1iHu4D0n9/p/8353561.html

时间: 2024-11-08 12:56:19

Secondary NameNode的相关文章

通过secondary namenode恢复崩溃的namenode

模拟namenode崩溃,将name目录的内容全部删除,然后通过secondary namenode恢复namenode. 环境:OS:Centos 6.5 x64 & Soft:Hadoop 1.2.1 1.进入name目录下,删除name目录内容. [[email protected] name]$ pwd/home/huser/hadoop/tmp/dfs/name [[email protected] name]$ lldrwxrwxr-x 2 huser huser 4096 4月 1

secondary namenode和namenode分离

namenode 和 secondaryNamenode 运行在同一机器上,分离配置到新节点上. 环境:OS:Centos 6.5 x64 & Soft:Hadoop 1.2.1 master中的配置不是决定谁是namenode,而是决定谁是secondarynamenode.决定谁是namenode的配置是core-site.xml中的fs.default.name这个参数.master中记录secondnamenode的IP或主机名,可以同时配置多个secondnamenode. 1.修改m

解读Secondary NameNode的功能

1.概述 最近有朋友问我Secondary NameNode的作用,是不是NameNode的备份?是不是为了防止NameNode的单点问题?确实,刚接触Hadoop,从字面上看,很容易会把 Secondary NameNode当作备份节点:其实,这是一个误区,我们不能从字面来理解,阅读官方文档,我们可以知道,其实并不是这么回事,下面就来赘述下 Secondary NameNode的作用. 2.Secondary NameNode? 在Hadoop中,有一些命名模块不那么尽人意,Secondary

Hadoop之Secondary NameNode

NameNode存储文件系统的变化作为log追加在本地的一个文件里:这个文件是edits.当一个NameNode启动时,它从一个映像文件:FsImage,读取HDFS的状态,使用来自edits日志文件的 edits.然后它将写入新的HDFS状态到FsImage并开始平常操作,此时edits是一个空文件.由于NameNode合并FsImage和edits只在启动时,edits日志文件会变得很大在一段时间内并运行在繁忙的集群上 ,一个副作用是一个更大的edits文件会使NameNode在下次重新启动

NameNode和Secondary NameNode通信模型

NameNode将对文件系统的改动追加保存到本地文件系统上的一个日志文件edits.当一个NameNode启动时,它首先从一个映像文件(fsimage)中读取HDFS的状态,接着执行日志文件中的编辑操作.然后将新的HDFS状态写人fsimage中,井使用个空的edits文件开始正常操作.因为NameNode只有在启动阶段才合并fsimage和edits,久而久之日志文件可能会变得非常庞大,特别是对于大型的集群.日志文件太大的另一个副作用是下一次NameNode启动会很长世间,NameNode和S

Secondary NameNode究竟是做什么的

Secondary NameNode:它究竟有什么作用? 在hadoop中,有一些命名不好的模块,Secondary NameNode是其中之一.从它的名字上看,它给人的感觉就像是NameNode的备份.但它实际上却不是.很多Hadoop的初学者都很疑惑,Secondary NameNode究竟是做什么的,而且它为什么会出现在HDFS中.因此,在这篇文章中,我想要解释下Secondary NameNode在HDFS中所扮演的角色. 从它的名字来看,你可能认为它跟NameNode有点关系.没错,你

Secondary NameNode 的作用

https://blog.csdn.net/xh16319/article/details/31375197 很多人都认为,Secondary NameNode是NameNode的备份,是为了防止NameNode的单点失败的,其实并不是这样. Secondary NameNode:它究竟有什么作用? 在Hadoop中,有一些命名不好的模块,Secondary NameNode是其中之一.从它的名字上看,它给人的感觉就像是NameNode的备份.但它实际上却不是.很多Hadoop的初学者都很疑惑,

secondary namenode 检查点

secondary namenode NameNode职责是管理元数据信息,DataNode的职责是负责数据具体存储,那么SecondaryNameNode的作用是什么?对很多初学者来说是非常迷惑的.它为什么会出现在HDFS中.从它的名字上看,它给人的感觉就像是NameNode的备份.但它实际上却不是. 大家猜想一下,当HDFS集群运行一段事件后,就会出现下面一些问题: ledit logs文件会变的很大,怎么去管理这个文件是一个挑战. lNameNode重启会花费很长时间,因为有很多改动要合并

NameNode&Secondary NameNode 工作机制

NameNode&Secondary NameNode 工作机制 NameNode: 1.启动时,加载编辑日志和镜像文件到内存 2.当客户端对元数据进行增删改,请求NameNode 3.NameNode记录操作日志,更新滚动日志 4.日志记录完成,在NameNode内存中对元数据进行操作 edits.001 操作日志 edits.002 edits.inprogress 正在进行的操作日志 fsimage 镜像文件 SecondaryNameNode:(其主要作用就是:合并edit和fsimag