双 NameNode(HA)实现原理
双NN出现背景
在 Hadoop1.x 版本中,HDFS 只支持一个 NameNode,为了保证稳定性,只能靠 SecondaryNameNode 来实现,而 SecondaryNameNode 不能做到热备,而且恢复的数据也不是最新的元数据。基于此,从 Hadoop2.x 版本开始,HDFS 开始支持多个 NameNode,这样不但可以实现 HDFS 的高可用性(HA,High Availability),而且还可以横行扩容 HDFS 的存储规模。
故而在实际的企业应用中,使用最多的是双 NameNode 架构,也就是一个 NameNode 处于 Active(活跃) 状态,另一个 NameNode 处于 Standby(备用)状态,通过这种机制,实现 NameNode 的双机热备高可用功能。
双 NameNode 的运行原理
在高可用的 NameNode 体系结构中,只有 Active 状态的 NameNode 是正常工作的,Standby 状态的 NameNode 处于随时待命状态,它时刻去同步 Active 状态 NameNode 的元数据。一旦 Active 状态的 NameNode 不能工作,可以通过手工或者自动切换方式将 Standby 状态的 NameNode 转变为 Active 状态,保持 NameNode 持续工作。这就是两个高可靠的 NameNode 的实现机制。
NameNode 主、备之间的切换可以通过手动或者自动方式