namenode的作用
名字节点主要用来保存HDFS的元数据信息,比如命名空间信息,块信息。可以分为文件系统目录树管理:1.对文件/目录的元信息和文件的数据块索引管理(主要通过INode、Feature、FSEditLog、FSImage等相关类进行管理)2.对数据块和数据节点进行管理。
namenode的高可用(HA)实现
namenode的HA主要包括主备切换、共享日志存储。
1.在集群中存在多个namenode,他们均处于active或standby状态。
2.共享日志存储:active namenode会向共享日志系统中写入日志文件,standby namenode从其中读取文件,与active namenode保持一致。共享日志系统一般采用Quorum Joural(群体日志)方案,主要包括JouralNode(JN)和Quorum Joural Manger(QJM),QJM负责将日志写入JN。同步到磁盘。一般利用2N+1台JN储存EditLog文件,只要大多数写入成功即认为写入成功。
3.主备切换:每个namenode中都运行着轻量级的ZKFC(ZKFailoverController相当于ZK的客户端),其主要包括HealthMonitor和ActivesStandbyEletocr。HealthMonitor定时调用程序监视namenode的健康情况,并向ZKFC汇报,如果监测到namenode健康状况发生变化,ZKFC会调用ActivesStandbyEletocr
与ZK一起完成选举,完成主备切换。
检查点机制(CheckPoint)
检查点机制是定期将edit