HDFS学习笔记2 -- 关于Secondary NameNode, Checkpoint Node, Backup Node和High Availability (HA)

  上篇介绍提到,NameNode主要经过EditLog和FsImage两个文件来维护整个集群的namespace。在NameNode启动时,合并两个文件并更新FsImage,并将EditLog清空,启动后只须要实时更新EditLog文件。若是集群庞大且操做十分密集的话,会使EditLog很是肥大,从而致使下次启动时合并两个文件须要花上很长时间。
  对于上术问题,HDFS经过有下面几种方式解决。node

Secondary NameNode
经过在另一台机器上配置Secondary NameNode,周期性地合并FsImage和EditLog来控制EditLog的大小。主要有两个参数配置参数:
・dfs.namenode.checkpoint.period 默认每一个一小时创建一个检查点
・dfs.namenode.checkpoint.txns 默认每100万条记录强制创建一个检查点oop

Checkpoint Node
配置Checkpoint Node和Secondary NameNode相似,是后者的替代方式,不一样之处在于它周期性地将NameNode的FsImage和EditLog下载到本地合并,而后把合并的结果上传回namenode。一个NameNode能够同时配置多个Checkpoint Node。spa

Backup Node
Backup Node一样能够提供上述Checkpoint的功能,同事维持一份和NameNode同步的内存映射。即其接收NameNode的EditLog,同时还将其内容更新至本身的内存,至关于作了一个namespace的备份。
Backup Node由于是时刻与NameNode同步的,因此它不须要从NameNode下载FsImage和EditLog,只须要按期地把本机上的FsImage和EditLog保存便可。
对于每一个NameNode,目前只容许配置一个Backup Node。并且利用Backup node模式就不容许登陆CheckPoint Node了。进程

HDFS High Availability
在Hadoop2.0以前,每一个集群只能有一个NameNode,若是它出现问题会致使整个集群瘫痪掉。所以NameNode须要有必定的冗余,一般配置成Active/Standby,在Active失效的时候能立刻无缝切换至standby机上。现阶段Active/Standby直接的同步有两种方式:
JournalNodes(JNs)伺服方式:ActiveNode持续地将EditLog写入到JournalNode伺服进程,而StandbyNode则可以实时监视并从中读取相关内容进行同步。JournalNodes只容许一个NameNode进行写入操做,若是Active失效,Standby将自动得到写入权。
shared NFS directory方式:经过挂接一个二者都拥有读写权限的共享文件夹的方式进行同步。Active一方不断将EditLog写入该文件夹,而Standby则监视该文件同时同步到本身的namesapce中。内存

相关文章
相关标签/搜索