HDFS的高可用工作原理(HA)的最权威分析

  • HA首先是启动两个nameNode,一个是active状态,一个是standby,当active挂掉后,standby通过zookeepe会自动迅速的替代上。这样集群就会非常的可靠。Zookeeper如何知道nameNode是active或standby状态呢?他是通过两个进程来知道的,叫做zookeeper failoveController(故障排除 控制器) active  和zookeeper failoveController standby 。简称 zkfc, 两个namenode会定时的向这两个进程汇报。也就是发送心跳报告,然后zookeeper就通过zkfc会得到这些信息。如果zookeeper没有收到zkfc某个namenode发送的心跳,那么zookeeper就 会认为这台机器挂掉了,然后zcfc Active会释放锁给到zookeeper, 然后zkfcStantby就会获得这锁,把nnStandby启动为nnactive状态,在启动过程中他会先把另一个已经挂掉的nameNode给kill掉,防止脑裂,因为nnactive向zkfc发送心跳信息时可能会有特殊情况导致误报。所以要kill掉,防止脑裂。
  • 两个namenode最重要的是数据同步,也就是同步元数据信息以及日志文件。在整个ha架构中,只要datanode的数据发生改变,namenodeactive会实时的把元数据信息以及日志文件写入到journalnode(journal 日志),journalNode的数量可以自己设置数量,一般设置为三个,保证高可用,nameNode把元数据信息以及日志文件写到journalnode以后,nameNodestandby会实时的把里面的数据读到本地。这样就会保证数据的一致性。
  • failoveController 故障排除 控制器  High Ability。高可用 Hdfs集群中NameNode存在单点故障,对于只有一个namedNode的集群,如果nameNode机器出现故障downtime, 比如说停电了,或者说硬件损坏,那么整个集群将无法使用,直到管理员手动启动nameNode 才可以继续使用集群,但是机房我们不可能随时都有人守着,所以我们需要配置一个HA,
  • 影响HDFS集群不可用主要包括以下两种情况
  1. Namenode机器宕机,将导致集群不可用,重启 Namenode之后オ可使用
  2. 计划内的软件或硬件升级( Namenode节点),导致集群在短时间内不可用
  3. HDFS的HA就是为了解决上述问题,通常由两个 Namenode组成,一个处于active状态,另一个处于 standby状态。 Active Namenode对外提供服务,比如处理来自客户端的RPC请求,而 Standby Namenode则不对外提供服务,仅同步 active namenode的状态,以便能够在它失败时快速进行切换。

 

猜你喜欢

转载自blog.csdn.net/Peter_Changyb/article/details/81540461