secondarynamenode

图:

secondarynamenode根据文件的的大小对namenode的编辑日志和镜像日志 进行合并。

光从字面上来理解,很容易让一些初学者先入为主的认为:SecondaryNameNode(snn)就是NameNode(nn)的热备进程。其 实不是。snn是HDFS架构中的一个组成部分,但是经常由于名字而被人误解它真正的用途,其实它真正的用途,是用来保存namenode中对HDFS metadata的信息的备份,并减少namenode重启的时间。对于hadoop进程中 ,要配置好并正确的使用 snn,还是需要做一些工作的。hadoop的默认配置中让 snn进程默认运行在了 namenode 的那台机器上,但是这样的话,如果这台机器出错,宕机,对恢复HDFS文件系统是很大的灾难,更好的方式是:将snn的进程配置在另外一台机器 上运行。

在hadoop中,namenode负责对HDFS的metadata的持久化存储,并且处理来自客户端的对HDFS的各种操作的交互反馈。为了保 证交互速度,HDFS文件系统的metadata是被load到namenode机器的内存中的,并且会将内存中的这些数据保存到磁盘进行持久化存储。为 了保证这个持久化过程不会成为HDFS操作的瓶颈,hadoop采取的方式是:没有对任何一次的当前文件系统的snapshot进行持久化,对HDFS最 近一段时间的操作list会被保存到namenode中的一个叫Editlog的文件中去。当重启namenode时,除了 load fsImage意外,还会对这个EditLog文件中 记录的HDFS操作进行replay,以恢复HDFS重启之前的最终状态。

而SecondaryNameNode,会周期性的将EditLog中记录的对HDFS的操作合并到一个checkpoint中,然后清空 EditLog。所以namenode的重启就会Load最新的一个checkpoint,并replay EditLog中 记录的hdfs操作,由于EditLog中记录的是从 上一次checkpoint以后到现在的操作列表,所以就会比较小。如果没有snn的这个周期性的合并过程,那么当每次重启namenode的时候,就会 花费很长的时间。而这样周期性的合并就能减少重启的时间。同时也能保证HDFS系统的完整性。

这就是SecondaryNameNode所做的事情。所以snn并不能分担namenode上对HDFS交互性操作的压力。尽管如此,当 namenode机器宕机或者namenode进程出问题时,namenode的daemon进程可以通过人工的方式从snn上拷贝一份metadata 来恢复HDFS文件系统。

最新文章

  1. js文章列表的树形结构输出
  2. Tableau:数据可视化之急速BI
  3. show slave各项参数解释
  4. HDU 4705 Y 树形枚举
  5. WPF中常用控件的属性
  6. 通过jQuery的attr修改onclick
  7. Redis几个认识误区
  8. UVa 324 - Factorial Frequencies
  9. ECMAScript6新特性之let、const
  10. Oracle ADDM报告生成和性能分析
  11. Hive基础知识
  12. java保留小数-抄网上的
  13. mysql语句将日期转换为时间戳的方法
  14. Python闭包和装饰器再复习
  15. 错误Matplotlib is building the font cache using fc-list. This may take a moment.
  16. [jzoj]3777.最短路(shortest)
  17. Java+Selenium 如何处理Try/Catch
  18. select 详解
  19. linux octave 4.0安装
  20. Android orm 框架xUtils简介

热门文章

  1. if,switch,do,while,for实例
  2. C# 参考之方法参数关键字:params、ref及out
  3. 得分(Score,ACM/ICPC Seoul 2005,UVa 1585)
  4. WinForm中动态添加控件 出现事件混乱,解决办法记录。
  5. VMWare提供了三种工作模式上网
  6. Linux2.6内核实现的是NPTL
  7. WAF绕过的技巧
  8. 删除(注意,删除后,后面顶上去,所以id会一直变,所以我们用class来定义,因为id是唯一的)
  9. vmware, failed to lock the file
  10. Java中的final修饰符