在hadoop 1.x版本中,是没有ha的实现方式的,它只有可以看做是冷备份的Secondary NameNode来起到冷备份的作用的,当NameNode挂掉的时候,我们需要手工启动Secondary NameNode。
那么为什么Secondary NameNode能够这样做,是因为SNN能够帮助NN做一些检查点的工作,会同步编辑日志和镜像文件,所以可以起到冷备的作用。在1.x版本中,当NN挂掉后,是没有办法立即启动起来继续为集群服务的。
到了hadoop 2.x版本,基本都有了hdfs ha的功能(即热备功能),当主NN挂掉后,备NN会立即启动进而接管主NN为集群不间断的提供服务,保证集群对外是没有任何宕机的情况。
接下来,我们根据上图来了解HA的方案是如何实现的?
在2.0版本中,Namenode可以部署两个:Active NN和Standly NN。在同一时间永远都是只有一个NN对外提供服务的,即Active NN。Active NN并不永远都是一个固定的状态,当Active NN出现故障后,Standly NN就会切换成Active NN提供服务,而之前的Active NN就会变成Standly NN停止位集群服务。