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的状态,以便能够在它失败时快速进行切换。

 

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值