在Hadoop-2.x版本之前,HDFS集群中的NameNode是单点故障的,即整个集群中只存在一个NameNode,虽然存在SecondaryNameNode,但由于二者关于命名空间的数据有可能不一致,比如NameNode在两次检查点间隔之间出现问题,这势必会导致部分数据的丢失。如果NameNode所在的主机或者namenode进程不可用,整个集群直到NameNode重启或者转移到SecondaryNameNode所在主机为止将使不可用的。上述情况主要以下面两种方式影响HDFS集群的整体可用性:
- 当出现非计划中的事件时如主机宕机,直到管理员重启NameNode为止,集群将不可用。
- 当进行计划中的维护事件时,如在NameNode主机上执行软硬件升级,将导致集群停机。
HDFS的高可用性(High Availability HA)特性解决了上述问题。通过在同一个集群中运行两个冗余的NameNode,其中一个处于active状态,另一个处于standby状态实现了热备份。这允许当其中一台主机宕机时能够进行快速故障恢复到另一个NameNode,或者在按计划维护时能够平滑地切换。
在简单了解了HDFS的高可用性及其优点后,现在学习一下HA的架构。在典型的HA集群中,两台单独的主机被配置为NameNode,任何时候只有一个NameNode处