它出现在Hadoop1.x版本中,又称辅助NameNode,在Hadoop2.x以后的版本中此角色消失。如果充当datanode节点的一台机器宕机或者损害,其数据不会丢失,因为备份数据还存在于其他的datanode中。但是,如果充当namenode节点的机器宕机或损害导致文件系统无法使用,那么文件系统上的所有文件将会丢失,因为我们不知道如何根据datanode的块重建文件。因此,对namenode实现容错非常重要。Hadoop提供了两种机制实现高容错性。

第一种机制是备份那些组成文件系统元数据持久状态的文件。Hadoop可以通过配置使namenode在多个文件系统上保存元数据的持久化状态。这些写操作是实时同步的,是原子操作。一般的配置是,将持久状态写入本地磁盘的同时,写入一个远程挂载的网络文件系统(NFS)。

另一种可行的方法是运行一个辅助namenode,但是它不能用作namenode,这个辅助namenode,在hadoop1.x中被称为secondary namenode,在hadoop2.x中,利用高可用(HA)解决单点故障问题。

Secondary namenode,以下简称SN,其重要作用是定期将编辑日志和元数据信息合并,防止编辑日志文件过大,并且能保证其信息与namenode信息保持一致。SN一般在另一台单独的物理计算机上运行,因为它需要占用大量CPU时间来与namenode进行合并操作,一般情况是单独开一个线程来执行操作过程。但是,SN保存的信息永远是滞后于namenode,所以在namenode失效时,难免会丢失部分数据。在这种情况下,一般把存储在NFS上的namenode元数据复制到SN并作为新的namenode。SN不是namenode的备份,可以作为备份。SN主要工作是帮助NN合并edits和fsimage,减少namenode的启动时间。

它不是NameNode的备份,但可以做备份,其主要工作是帮助NameNode合并editslog,减少NameNode的启动时间。SecondaryNameNode执行合并的时机决定于:

(1)              配置文件设置的时间间隔fs.checkpoint.period,默认为3600秒。

(2)              配置文件设置edits log大小fs.checkpoint.size,规定edits文件的最大值默认是64MB。

图1.6  SecondaryNameNode合并流程

如上图,当namenode运行了3600s后,SN取出fsimage和edits,合并,更新fsimage,命名为fsimage.ckpt,将fsimage.ckpt文件传入namenode中,合并过程中,客户端会继续上传文件。同时,namenode会创建新的edits.new文件,将合并过程中,产生的日志存入edits.new,namenode将 fsimage.ckpt,更名为fsimage,edits.new更名为edits。

如果在合并过程中,namenode损坏,那么,丢失了在合并过程中产生的edits.new,因此namenode失效时,难免会丢失部分数据。

最新文章

  1. css div垂直居中
  2. sizeof和小部分c++语法
  3. ffmpeg-20160628-git-bin.7z
  4. MYSQL写入数据时报错ERROR 1366 (HY000): Incorrect string value: '\xE8\x8B\xB1\xE5\xAF\xB8...' for c 插入中文不能插入
  5. linux笔记:linux常用命令-权限管理命令
  6. HDU5438--Ponds (拓排+BFS)
  7. Golang学习笔记
  8. 《C++ Primer 4th》读书笔记 第8章-标准IO库
  9. 请大神帮忙解决 jquery 控制 li 标签问题
  10. zedboard--交叉编译Opencv库的生成 分类: shell ubuntu fool_tree的笔记本 ZedBoard OpenCV 2014-11-08 18:57 171人阅读 评论(0) 收藏
  11. POJ 3279(Fliptile)题解
  12. Java中String转换Double类型 Java小数点后留两位
  13. web报表工具FineReport使用中遇到的常见报错及解决办法(二)
  14. spring AOP的概念和使用
  15. iTrash for Mac(卸载工具)破解版含注册机
  16. Visual Studio Many Projects in One Solution VS中多工程开发
  17. Lintcode40-Implement Queue by Two Stacks-Medium
  18. OOP KLASSOOP, instanceklass
  19. SQL Serever学习12——数据库的备份和还原
  20. cookie、session、分页

热门文章

  1. 自定义设置jqGrid的标头居中加粗等
  2. np.meshgrid
  3. 通过sed -i ,通过准备好的sh脚本,来设置linux iptable白名单
  4. <img>的title和Alt有什么区别?
  5. UnicodeEncodeError: 'latin-1' codec can't encode characters,python3 中文乱码
  6. SAP views
  7. python:pytest优秀博客
  8. Influx Sql系列教程一:database 数据库
  9. Java学习关注
  10. log sum of exponential