您的位置:首页 > Web前端 > Node.js

Hadoop--NameNode && SecondNameNode

2016-09-06 11:33 567 查看
SecondaryNameNode(SNN)是HDFS架构中的一个组成部分,是用来保存NameNode中对HDFS metadata的信息的备份,并减少NameNode重启的时间。

Hadoop的默认配置中让SNN进程默认运行在了NameNode 的那台机器上,但是这样的话,如果这台机器出错,宕机,对恢复HDFS文件系统是很大的灾难,更好的方式是:将SNN的进程配置在另外一台机器 上运行。

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

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

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

fsimage是filesystem image 的简写,即文件镜像。fsimage文件其实是Hadoop文件系统元数据的一个永久性的检查点,fsimage是存于硬盘的元数据检查点,其中包含Hadoop文件系统中的所有目录和文件idnode的序列化信息。fsimage文件中包含文件元数据信息,不包含文件块位置的信息。Hadoop不会对每个文件操作都写出到fsimage,这样是很慢的,但是每个文件操作都会在提交后运行前先写入edits编辑日志,这样在namenode出现故障后,就会将fsimage和edits编辑日志结合读入内存,重建元数据信息。NameNode把文件块位置信息存储在内存中,这些位置信息是,在
datanode加入集群的时候,namenode询问datanode得到的,并且间断的更新。

editlog文件记录了日常针对数据文件的操作,用户对HDFS的每步操作都会先记录到NameNode磁盘中的editLog文件中。在HDFS启动时,会合并fsimage文件与editlog文件,构成整个HDFS文件系统。

为了避免edits编辑日志的无限制扩大,secondary namenode 就回按照时间阈值(比如1小时)或者按大小阈值(edits编辑日志文件大小超过64M,这些参数都可以设置)“周期性”的读取namenode中的edits和fsimage重构fsimage检查点,同时在namenode中进行edits的滚动,来解决这个问题。

客户端修改文件时候,先写到editlog,成功后才更新内存中的metadata信息。只有当对文件操作成功的时候,才会写到editlog。

元数据,为描述数据的数据,主要是描述数据属性的信息,用来支持如指示存储位置、历史数据、资源查找、文件记录等功能。Hadoop中的元数据维护HDFS文件系统中文件和目录的信息,分为内存元数据和元数据文件两种。NameNode维护整个元数据。

HDFS快照是文件系统的只读的实时的拷贝,可以是文件系统的一部分或者整个文件系统。快照的一些通用场景是数据备份,对用户错误的保护和灾难恢复。快照的创建时瞬间完成的,排除查找inode的时间,需要花费O(1),即常数时间。

只有执行与快照相关的修改时才需要额外的内存,内存开销为O(M),M为修改的文件或者目录的数量。

DataNodes中的块不会被复制,快照文件只记录块列表和文件的大小,没有数据的复制。

快照对常规HDFS操作没有有害影响,修改按时间逆序记录这样当前数据可以直接被访问(因为当前数据排在最前面,逆序)。快照数据通过从当前数据中减去修改来计算。

【参考】

1. http://www.ithao123.cn/content-2284347.html

2. http://blog.csdn.net/maixia24/article/details/38396281

3. http://blog.csdn.net/skywalker_only/article/details/40395933
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐