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

在Hadoop中,有一些命名模块不那么尽人意,Secondary NameNode就是一个典型的例子之一。从它的名字上看,它给人的感觉就像是NameNode的备份节点,但实际上却不是。很多Hadoop的入门者都很疑惑,Secondary NameNode究竟在其中起什么作用,它在HDFS中所扮演的角色是什么。下面,我就来解释下:

从名字来看,它确实与NameNode有点关系;因此,在深入了解Secondary NameNode之前,我们先来看看NameNode是做什么的。

2.1NameNode

NameNode主要是用来保存HDFS的元数据信息,比如命名空间信息,块信息等等。当它运行的时候,这些信息是存在内存中的。但是这些信息也可以持久化到磁盘上。如下图所示:

上图展示来NameNode怎么把元数据保存到磁盘上,这里有两个不同的文件:

  • fsimage:

它是NameNode启动时对整个文件系统的快照。

  • edits:

它是在NameNode启动后,对文件系统的改动序列。

只有在NameNode重启时,edits才会合并到fsimage文件中,从而得到一个文件系统的最新快照。但是在生产环境集群中的NameNode是很少重启的,这意味者当NameNode运行来很长时间后,edits文件会变的很大。在这种情况下就会出现下面这些问题:

  1. edits文件会变的很大,如何去管理这个文件?

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

  3. 如果NameNode宕掉了,那我们就丢失了很多改动,因为此时的fsimage文件时间戳比较旧。

因此为了克服这个问题,我们需要一个易于管理的机制来帮助我们减小edits文件的大小和得到一个最新的fsimage文件,这样也会减小在NameNode上的压力。而Secondary NameNode就是为了帮助解决上述问题提出的,它的职责是合并NameNode的edits到fsimage文件中。如图所示:

上图的工作原理,我这里也赘述下:

  1. 首先,它定时到NameNode去获取edits,并更新到fsimage上。

  2. 一旦它有新的fsimage文件,它将其拷贝回NameNode上。

  3. NameNode在下次重启时回使用这个新的fsimage文件,从而减少重启的时间。

Secondary NameNode的整个目的在HDFS中提供一个Checkpoint Node,通过阅读官方文档可以清晰的知道,它只是NameNode的一个助手节点,这也是它在社区内被认为是Checkpoint Node的原因。

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

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

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

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

  • 默认值是64MB。

如果NameNode上除了最新的检查点以外,所有的其他的历史镜像和edits文件都丢失了, NameNode可以引入这个最新的检查点。以下操作可以实现这个功能。

  • 在配置参数dfs.name.dir指定的位置建立一个空文件夹;

  • 把检查点目录的位置赋值给配置参数fs.checkpoint.dir;

  • 启动NameNode,并加上-importCheckpoint。

NameNode会从fs.checkpoint.dir目录读取检查点,并把它保存在dfs.name.dir目录下。如果dfs.name.dir目录下有合法的镜像文件,NameNode会启动失败。NameNode会检查fs.checkpoint.dir目录下镜像文件的一致性,但是不会去改动它。

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

下面附上官方文档说明:

The NameNode stores modifications to the file system as a log appended to a native file system file, edits. When a NameNode starts up, it reads HDFS state from an image file, fsimage, and then applies edits from the edits log file. It then writes new HDFS state to the fsimage and starts normal operation with an empty edits file. Since NameNode merges fsimage and edits files only during start up, the edits log file could get verylarge over time on a busy cluster. Another side effect of a larger edits file is that next restart of NameNode takes longer.The secondary NameNode merges the fsimage and the edits log files periodically and keeps edits log size within a limit. It is usually run ona different machine than the primary NameNode since its memory requirements are on the same order as the primary NameNode.The start of the checkpoint process on the secondary NameNode is controlled by two configuration parameters.
* dfs.namenode.checkpoint.period, set to 1 hour by default, specifies the maximum delay between two consecutive checkpoints, and* dfs.namenode.checkpoint.txns, set to 1 million by default, defines the number of uncheckpointed transactions on the NameNode which will force   an urgent checkpoint, even if the checkpoint period has not been reached.  The secondary NameNode stores the latest checkpoint in a directory which is structured the same way as the primary NameNode's directory. So that the check pointed image is always ready to be read by the primary NameNode if necessary.

参考地址:https://www.cnblogs.com/smartloli/p/4342340.html

推荐阅读:

kafka消费者分组消费的再平衡策略

Hdfs的DN节点数据磁盘大小不均衡如何处理

解读Secondary NameNode的功能相关推荐

  1. Secondary NameNode:它究竟有什么作用?(转自:http://blog.csdn.net/xh16319/article/details/31375197)

    前言 最近刚接触Hadoop, 一直没有弄明白NameNode和Secondary NameNode的区别和关系.很多人都认为,Secondary NameNode是NameNode的备份,是为了防止 ...

  2. Secondary Namenode的Check point机制以及Namenode、Datanode工作机制说明

    目录 前言: 1.NameNode的工作机制 2.DataNode的工作机制 3.Secondary Namenode的Check point机制 目录 前言: 在说明checkpoint机制之前,先 ...

  3. 模拟namenode挂掉利用secondary namenode恢复

    测试机器: 10.0.50.144  master  (namenode,datanode) 10.0.50.145  node1    (datanode) 10.0.50.146  node2   ...

  4. 简明扼要的HDFS元数据管理机制描述(NameNode和Secondary NameNode工作机制)

    目录 一.思考: NameNode中的元数据是存储在哪里? 二.NameNode和Secondary NameNode工作机制 三.Fsimage和Edits概念 一.思考: NameNode中的元数 ...

  5. Secondary NameNode和Standby NameNde的区别

    Secondary NameNode: HDFS单NameNode节点的情况下(即非高可用HA),Secondary NameNode负责每隔一段时间将旧的fsimage文件和edits log文件m ...

  6. Hadoop——使用secondary namenode数据恢复namenode

    secondary namenode会定期将fsimage和edits从namenode上拉取进行合并,且在在secondary nemenode上有副本,当namenode节点损坏后,我们可以通过这 ...

  7. Hadoop中的Namenode、Datanode和Secondary Namenode

    1.namenode Namenode 管理着文件系统的Namespace.它维护着文件系统树(filesystem tree)以及文件树中所有的文件和文件夹的元数据(metadata),比如命名空间 ...

  8. 大数据之-Hadoop之HDFS_NameNode和Secondary NameNode工作机制_通过文件的增删改查说明---大数据之hadoop工作笔记0070

    然后我们再来说一下,hadoop的集群中的namenode节点的工作原理. 1.我们先来大体的了解一下,如果有客户端要来上传文件,这个过程,会先访问namenode,给namenode节点发送请求 2 ...

  9. Namenode主备切换或报 IPC Server handler 23 on 8020

    转自:http://blog.csdn.net/u014033218/article/details/75570313 可能是以下原因,未测试: NameNode 高可用整体架构概述 在 Hadoop ...

  10. 深入浅出理解 HDFS NameNode HA

    NameNode 高可用整体架构概述 在Hadoop1.0时代,Hadoop的两大核心组件HDFS NameNode和JobTracker都存在着单点问题,这其中以NameNode的单点问题尤为严重. ...

最新文章

  1. DNS,edns,httpdns杂谈
  2. python语言入门w-1Python开发——基础入门
  3. gulp.js 的安装以及使用
  4. python人头识别_python+opencv实现人头检测
  5. ListView(1)
  6. 同一个tomcat部署多个项目导致启动失败
  7. 【CF gym 103260】40th Petrozavodsk Programming Camp, Day 5,2021.2.3 水题2题
  8. 复习JS事件及DOM
  9. Atitit.软件的建模种类and 建模语言选型and UML???
  10. 51单片机两只老虎c语言程序,源码共享:51单片机上实现7首简单音乐的汇编代码...
  11. EL表达式和JSTL笔记
  12. 树莓派用iPad做显示器
  13. 【厚积薄发】Crunch压缩图片的AssetBundle打包
  14. 拉卡拉支付开启生态化移动支付新趋势
  15. Linux I2C驱动
  16. 7-20 出生年 (10 分)
  17. 2019 拼多多校招第三题sum 服务端研发工程师
  18. Android 读取系统联系人
  19. 经典论文-MobileNetV3论文及实践
  20. 中软国际面试题及答案

热门文章

  1. theos tweak导入自定义类
  2. java前端vml_在Web中使用JavaScript和VML实现WebGIS中的测距
  3. Web在线报表设计器使用指南
  4. Lattice Diamond 加入未默认支持flash
  5. ewebeditor漏洞大全
  6. 百分数转换小数 java_Java百分数之间算法 百分数转小数
  7. ul li img标签 图片不显示的问题
  8. 浙江大学计算机2018分数线,浙江大学2018多少录取分数线
  9. 许晓斌_Maven实战(五)——自动化Web应用集成测试
  10. 国内资深安全专家详谈网页***