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

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

2014-04-21 23:12 811 查看
上篇介绍提到,NameNode主要通过EditLog和FsImage两个文件来维护整个集群的namespace。在NameNode启动时,合并两个文件并更新FsImage,并将EditLog清空,启动后只需要实时更新EditLog文件。如果集群庞大且操作十分密集的话,会使EditLog非常肥大,从而导致下次启动时合并两个文件需要花上很长时间。
对于上术问题,HDFS通过有下面几种方式解决。

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

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

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中。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: