Hadoop的SecondaryNameNode是什么

这篇文章主要介绍“Hadoop的Secondary NameNode是什么”,在日常操作中,相信很多人在Hadoop的Secondary NameNode是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Hadoop的Secondary NameNode是什么”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

创新互联公司是由多位在大型网络公司、广告设计公司的优秀设计人员和策划人员组成的一个具有丰富经验的团队,其中包括网站策划、网页美工、网站程序员、网页设计师、平面广告设计师、网络营销人员及形象策划。承接:网站建设、成都网站设计、网站改版、网页设计制作、网站建设与维护、网络推广、数据库开发,以高性价比制作企业网站、行业门户平台等全方位的服务。

Secondary NameNode从它的名字上来看,给人的感觉是NameNode的备份。但实际上不是这样。那到底Secondary NameNode在HDFS中扮演的是什么角色呢?

从名字上来看Secondary NameNode与NameNode,都包含着NameNode,这两者是不是存在某种关系呢,先来看下NameNode是干什么的。

NameNode

NameNode主要是用来保存HDFS的元数据信息,比如命名空间信息,快信息等。当它运行的时候,这些信息会保存在内存中。同时这部分信息也会持久化到磁盘上。

  • fsimage:是在NameNode启动时对整个文件系统的快照

  • edits:在NameNode启动后,对文件系统改动序列

只有在NameNode重启时,edits才会合并到fsimage文件中,从而得到一个文件系统的最新快照。但是在产品集群中NameNode是很少重启的,这也意味着当NameNode运行了很长时间后,edits文件会变得很大。就会面临如下问题:

  1. edits文件会变的很大,怎么去管理这个文件是一个挑战

  2. NameNode的重启会花费很长时间,因为有很多edits中改动要合并到fsimage文件上。

  3. 如果NameNode挂掉了,就会丢失了很多改动,因为此时的fsimage文件非常旧。

这个时候Secondary NameNode就出场了,Secondary NameNode可以来帮助解决上面问题,它的职责就是用来合并NameNode的edits到fsimage中。

Secondary NameNode

HDFS文件系统的写操作不是直接被修改到fsimage中,而是edits中,Secondary NameNode节点负责将两者进行整合。

checkpoint过程如下:

  1. Secondary Namenode请求Namenode停止使用edits文件,暂时将新的写操作记录到一个新文件中,如edits.new。

  2. Secondary Namenode节点从Namenode节点获取fsimage和edits文件(采用HTTP GET)

  3. Secondary Namenode将fsimage文件载入到内存,逐一执行edits文件中的操作,创建新的fsimage文件

  4. Secondary Namenode将新的fsimage文件发送回Namenode(使用HTTP POST)

  5. Namenode节点将从Secondary Namenode节点接收的fsimage文件替换旧的fsimage文件,用步骤1产生的edits.new文件替换旧的edits文件(即改名)。同时更新fstime文件来记录检查点执行的时间
    注:从Hadoop0.21.0开始,辅助Namenode已经放弃不用,由checkpoint节点取而代之,功能不变。新版本同时引入一种新的Namenode,名为BackupNode。

Secondary NameNode的整个目的在HDFS中提供一个Checkpoint Node,它只是NameNode的一个助手节点

现在,我们明白Secondary NameNode所做的是在文件系统这设置一个Checkpoint来帮助NameNode更好的工作;它不是取代NameNode,也不是NameNode的备份。

Secondary NameNode的检查点进程启动,是由两个配置参数控制的:

  • fs.checkpoint.period,指定连续两次检查点的最大时间间隔, 默认值是1小时。

  • fs.checkpoint.size定义了edits日志文件的最大值,一旦超过这个值会导致强制执行检查点(即使没到检查点的最大时间间隔)。默认值是64MB。

关于NameNode是什么时候将改动写到edit logs中的?
这个操作实际上是由DataNode的写操作触发的,当我们往DataNode写文件时,DataNode会跟NameNode通信,告诉NameNode什么文件的第几个block放在它那里,NameNode这个时候会将这些元数据信息写到edit logs文件中。

到此,关于“Hadoop的Secondary NameNode是什么”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注创新互联网站,小编会继续努力为大家带来更多实用的文章!


标题名称:Hadoop的SecondaryNameNode是什么
分享地址:http://myzitong.com/article/peidho.html