我的机器学习教程「美团」算法工程师带你入门机器学习  以及 「三分钟系列」数据结构与算法  已经开始更新了,欢迎大家订阅~这篇专栏整合了这几年的算法知识,简单易懂,也将是我实体书的BLOG版。

欢迎大家扫码关注微信公众号「图灵的猫」,除了有更多AI、算法、Python相关文章分享,还有免费的SSR节点和外网学习资料。其他平台(微信/知乎/B站)也是同名「图灵的猫」,不要迷路哦~

SecondaryNameNode有两个作用,一是镜像备份,二是日志与镜像的定期合并。两个过程同时进行,称为checkpoint(检查点)。 从它的名字上看,它给人的感觉就像是NameNode的备份,但它实际上却不是。很多Hadoop的初学者都很疑惑,Secondary NameNode究竟是做什么的,以及它为什么会出现在HDFS中。

NameNode

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

上面的这张图片展示了NameNode怎么把元数据保存到磁盘上的。这里有两个不同的文件:

  • fsimage - 它是在NameNode启动时对整个文件系统的快照
  • edit logs - 它是在NameNode启动后,对文件系统的改动序列

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

在这种情况下就会出现下面一些问题:

  • edit logs文件会变的很大,怎么去管理这个文件是一个挑战。
  • NameNode的重启会花费很长时间,因为有很多改动要合并到fsimage文件上。

如果NameNode挂掉了,那我们就丢失了很多改动因为此时的fsimage文件非常旧。因此为了克服这个问题,我们需要一个易于管理的机制来帮助我们减小edit logs文件的大小和得到一个最新的fsimage文件,这样也会减小在NameNode上的压力。这跟Windows的恢复点是非常像的,Windows的恢复点机制允许我们对OS进行快照,这样当系统发生问题时,我们能够回滚到最新的一次恢复点上。

现在我们明白了NameNode的功能和所面临的挑战 - 保持文件系统最新的元数据。那么,这些跟Secondary NameNode又有什么关系呢?

Secondary NameNode所做的不过是在文件系统中设置一个检查点来帮助NameNode更好的工作。它不是要取代掉NameNode也不是NameNode的备份, SecondaryNameNode有两个作用,一是镜像备份,二是日志与镜像的定期合并。两个过程同时进行,称为checkpoint(检查点)。 
镜像备份的作用:备份fsimage(fsimage是元数据发送检查点时写入文件); 日志与镜像的定期合并的作用:将Namenode中edits日志和fsimage合并,防止如果Namenode节点故障,namenode下次启动的时候,会把fsimage加载到内存中,应用edits log,edits log往往很大,导致操作往往很耗时。(这也是namenode容错的一套机制)

Secondarynamenode工作过程

SecondaryNameNode备份由三个参数控制fs.checkpoint.period控制周期(以秒为单位,默认3600秒),fs.checkpoint.size控制日志文件超过多少大小时合并(以字节为单位,默认64M), dfs.http.address表示http地址,这个参数在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的重要作用是定期通过编辑日志文件合并命名空间镜像,以防止编辑日志文件过大。SecondaryNameNode一般要在另一台机器上运行,因为它需要占用大量的CPU时间与namenode相同容量的内存才可以进行合并操作。它会保存合并后的命名空间镜像的副本,并在namenode发生故障时启用。

Secondary Namenode工作机制详解相关推荐

  1. Hadoop框架:NameNode工作机制详解

    本文源码:GitHub·点这里 || GitEE·点这里 一.存储机制 1.基础描述 NameNode运行时元数据需要存放在内存中,同时在磁盘中备份元数据的fsImage,当元数据有更新或者添加元数据 ...

  2. Hadoop之NameNode和SecondaryNameNode工作机制详解

    Hadoop之NameNode和SecondaryNameNode工作机制详解 NN和2NN工作机制 NN和2NN工作机制详解 Fsimage和Edits解析 checkpoint时间设置 1. NN ...

  3. Hadoop之Yarn工作机制详解

    Hadoop之Yarn工作机制详解 目录 Yarn概述 Yarn基本架构 Yarn工作机制 作业提交全过程详解 1. Yarn概述 Yarn是一个资源调度平台,负责为运算程序提供服务器运算资源,相当于 ...

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

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

  5. Hadoop框架:DataNode工作机制详解

    本文源码:GitHub·点这里 || GitEE·点这里 一.工作机制 1.基础描述 DataNode上数据块以文件形式存储在磁盘上,包括两个文件,一个是数据本身,一个是数据块元数据包括长度.校验.时 ...

  6. JVM结构、GC工作机制详解

    题外话:最近在应聘阿里2015暑期实习,感触颇多.机会总是留给有准备的人的,所以平常一定要注意知识的巩固和积累.知识的深度也要有一定的理解,不比别人知道的多,公司干嘛选你?关于JVM和GC,我相信学j ...

  7. VM结构、GC工作机制详解

    2019独角兽企业重金招聘Python工程师标准>>> 题外话:最近在应聘阿里2015暑期实习,感触颇多.机会总是留给有准备的人的,所以平常一定要注意知识的巩固和积累.知识的深度也要 ...

  8. 业余草分享面试题,JVM结构、GC工作机制详解

    题外话:最近在应聘阿里2015暑期实习,感触颇多.机会总是留给有准备的人的,所以平常一定要注意知识的巩固和积累.知识的深度也要有一定的理解,不比别人知道的多,公司干嘛选你?关于JVM和GC,我相信学j ...

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

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

  10. NameNode和SecondaryNameNode详解

    一.NN和2NN工作机制 NN和2NN工作机制,如图 1.第一阶段:NameNode启动 (1)第一次启动NameNode格式化后,创建fsimage和edits文件.如果不是第一次启动,直接加载编辑 ...

最新文章

  1. 互联网引发全面深刻产业变革
  2. Linux下如何对tomcat Java线程进行分析?
  3. BlockChain:区块链/加密数字货币落地技术应用高质量相关文章
  4. 编写五子棋程序时如何添加下棋时的音效_干货:如何提高编程能力
  5. C++STL常用算术生成算法
  6. linux内核关闭tcp校验,linux内核tcp调优规范与方案
  7. 工作314:uni-提交成功加入表单验证
  8. CDH - 启动HbaseMaster时异常
  9. mysql数据库开发要求_MYSQL数据库开发规范
  10. 什么都没学到,记录一个鼠标监听事件吧
  11. UI设计师必收藏的上百种配色方案专辑!
  12. verilog学习记(时序电路)
  13. js 字符串编码与解码
  14. ping 代理_linux命令行代理神器-proxychains
  15. 精通JavaScript DOM事件
  16. 常用的18个免费论文文献网站,分享给大家
  17. 《好战略,坏战略》 摘记
  18. [iOS]Xcode8 搭建 .framework
  19. Android开发之隐示意图跳转
  20. Smali语法学习三

热门文章

  1. 进击的雨燕----------基本运算符
  2. Spark 1.0.0版本号公布
  3. 返回List的分页方法
  4. 新浪的wap网站,发现原来我们的head存在着这样的差异
  5. [转]用C#编写ActiveX控件
  6. nginx下Thinkphp 隐藏index.php
  7. 【剑指Offer】46、圆圈中最后剩下的数
  8. Telerik for AJAX RadGrid控件
  9. SQL查询-将列转换成字符串(for xml path)
  10. Flat-Lattice-Transformer项目经验教训