学科分类
目录
Hadoop技术栈

HDFS的高可用架构

在HDFS分布式文件系统中,NameNode是系统的核心节点,它存储了各类元数据信息,并负责管理文件系统的命名空间和客户端对文件的访问。但是,在Hadoop1.0版本中,NameNode只有一个,一旦这个NameNode发生故障,就会导致整个Hadoop集群不可用,也就是发生了单点故障问题。

为了解决单点故障问题,Hadoop2.0中的HDFS中增加了对高可用的支持。在高可用的HDFS集群中,通常有两台或者两台以上的机器充当NameNode,在任意时间内,都要保证至少有一台机器处于活动(Active)状态,一台机器处于备用(Standby)状态。处于活动状态的NameNode负责处理客户端请求,而处于备用状态的NameNode则处于“随时待命”状态。一旦处于活动状态NameNode节点发生故障,那么处于备用状态的NameNode会立即接管它的任务并开始处理客户端请求,保证业务不会出现明显中断,不影响系统的正常对外服务。接下来,通过一张图来描述HDFS的高可用架构,如图1所示。

image-20200610181912822

图1 HDFS的高可用架构

图1所示的高可用架构中,共包含了两个NameNode,其中一个处于活动状态,一个处于备用状态,活跃状态的NameNode将更新的数据写入共享存储系统中,备用状态的NameNode会一直监听共享存储系统,一旦发现有新的数据,就会立即从共享存储系统中将这些数据加载到自己内存中,从而保证与活跃状态的数据同步。

Zookeeper是一种在HDFS高可用集群中集中提供自动故障转移功能的服务,它为每个NameNode都分配了一个故障恢复控制器(Zookeeper Failover Controller,简称ZKFC),该控制器用于监控NameNode的健康状态,并通过“心跳”方式定期和Zookeeper保持通信。一旦NameNode发生故障,Zookeeper会通知备用状态的NameNode启动,使其成为活动状态去处理客户端请求,从而实现高可用。

点击此处
隐藏目录