为什么要Namenode HA?
实现高可用(ansible部署namenode节点下配置两个主机组)
Namenode HA如何实现,关键技术难题是什么?
- 如何保持主备NameNode的状态同步,并让Standby(备)在Active(主)挂掉后迅速提供服务,namenode启动比较耗时,包括加载fsimage和editlog(获取file to block信息),处理所有datanode第一次blockreport(获取block to datanode信息),保持NN的状态同步,需要这两部分信息同步
- 脑裂(split-brain),指在一个高可用(HA)系统中,当联系着的两个节点断开联系时,本来为一个整体的系统,分裂为两个独立节点,这时两个节点开始争抢共享资源,结果会导致系统混乱。
- NameNode切换对外透明,主Namenode切换为另外一台机器时,不应该导致正在连接的客户端失败,主要包括client,datanode和namenode的连接。
社区NN的NA架构,实现原理,各部分的实现机制,解决了那些问题?
- 非HA得namenode架构,一个HDFS集群只存在一个NN,DN只向一个NN汇报,NN得editlog存储在本地目录
- 社区 NN HA 架构
(1) NA包括两个NN,Standby(备)在Active(主)、ZKFC、ZK、share editlog
流程:集群启动后一个NN处于Active状态,并提供服务,处理客户端和dat