温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Hadoop的Secondary NameNode是什么

发布时间:2021-12-09 15:16:28 来源:亿速云 阅读:322 作者:iii 栏目:云计算

这篇文章主要介绍“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是什么”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注亿速云网站,小编会继续努力为大家带来更多实用的文章!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI