六、HA机制
通过学习,我们发现,如果一个集群中的NameNode突然宕机,那么集群就不能提供服务了,因为NameNode存储了HDFS上的元数据信息,NameNode一旦宕机,其上存储的文件元数据信息会立即从内存中丢失。当客户端再次请求访问某个文件时,找不到NameNode,就找不到请求文件的元数据,即找不到请求文件的名字、地址即块列表等信息。因此对于这种情况应该如何应对?这里提出了HA机制。
HA机制的基本思想是:在集群中接入两个NameNode节点,若其中一个宕机,那么另一个可以继续工作。但是这样就违背了Hadoop集群的主从结构只有一个NameNode的要求,若存在两个NameNode则会出现抢夺资源的情况。
Hadoop2.0提供的HA机制可以解决这个问题。
Hadoop的HA机制:
通过为两个NameNode配置Active和Standby状态来实现的。ActiveNameNode是当前集群中正在工作的守护进程,负责Client对文件的请求和访问,StandbyNameNode则处于就绪准备状态,不参与集群的工作。
在一个典型的HDFS(HA)集群中,将两台单独的服务器配置NameNode。在任何情况下确保只有一个NameNode处于Active状态。ActiveNameNode负责集群中的所有Client操作,StandbyNameNode处于备用状态,一旦ActiveNameNode出现问题可以及时切换。
七、 HDFS的Federation架构
为了水平扩展NameNode,Federation使用了多个独立的NameNode/namespace。这些节点之间是联合的,他们之间相互独立,各自分工,管理自己的区域。而分布式的DataNode做为通用的数据块存储设备,即:每个DataNode都要所有的NameNode发送心跳,并执行来自所有NameNode的命令。
HDFS的Federation架构的不足:
- 单点故障问题; HDFS的Federation并没有完全解决该故障,如果某个NameNode挂掉,其管理的文件就不能被访问。 Federation中每个NameNode仍然向之前的HDFS上实现一样,配有一个SecondaryNameNode,以便主节点挂掉,用于还原元数据信息。
- 负载均衡问题: HDFS的Federation架构采用了Client Side Mount Table分摊文件和负载,该方法需要人工介入以达到理想的负载均衡。