大数据笔记之HA(High Availability)

HA——High Availability

HA的作用:1.解决单点故障问题,比如主节点宕机或者主节点软件或硬件升级,导致集群在短时间内不可用。

                    2.提升集群容量和集群性能

HA基本原理

HA 机制有两个namenode(NN),一个是active NN,状态是active;另外一个是standby NN,状态是standby。两者的状态是可以切换的,但不能同时两个都是active状态,最多只有1个是active状态。只有active NN提供对外的服务,standby NN是不对外服务的。active NN和standby NN之间通过NFS或者JN(journalnode,QJM方式)来同步数据。

active NN会把最近的操作记录写到本地的edits file中,并传输到NFS或者JN中。standby NN定期的检查,从NFS或者JN把最近的edit file读过来,然后把edits文件和fsimage文件合并成一个新的fsimage,合并完成之后会通知active NN获取这个新fsimage。active NN获得这个新的fsimage文件之后,替换原来旧的fsimage文件。

HA实现方式

  • 利用共享存储在两个NN间同步edits信息

通过NN内部每次元数据变动后的flush操作,加上NFS的close-to-open,数据的一致性得到了保证。

  • DN同时向两个NN汇报块信息

让Standby NN保持集群最新状态的必需步骤

  • 用于监视和控制NN进程的FailoverController进程

使用ZooKeeper来做同步锁,但用户可以方便的把这个ZooKeeper FailoverController替换为其他的HA方案或leader选举方案。
 

HA解决方案架构

MasterHADaemon:与Master服务运行在同一个进程中,可接收外部RPC命令,以控制Master服务的启动和停止。

SharedStorage:共享存储系统,active master将信息写入共享存储系统,而standby master则读取该信息以保持与active master的同步,从而减少切换时间。常用的共享存储系统有zookeeper(被YARN HA采用)、NFS(被HDFS HA采用)、HDFS(被MapReduce HA采用)和类bookeeper系统(被HDFS HA采用)。

ZKFailoverController:基于Zookeeper实现的切换控制器,主要由两个核心组件构成:ActiveStandbyElector和HealthMonitor,其中,ActiveStandbyElector负责与zookeeper集群交互,通过尝试获取全局锁,以判断所管理的master进入active还是standby状态;HealthMonitor负责监控各个活动master的状态,以根据它们状态进行状态切换。

Zookeeper集群:核心功能通过维护一把全局锁控制整个集群有且仅有一个active master。当然,如果ShardStorge采用了zookeeper,则还会记录一些其他状态和运行时信息。

解决HA考虑两个问题

  •  脑裂(brain-split)

        脑裂是指在主备切换时,由于切换不彻底或其他原因,导致客户端和Slave误以为出现两个active master,最终使得整个集群处
于混乱状态。解决脑裂问题,通常采用隔离(Fencing)机制.
包括三个方面:

  1. 共享存储fencing:确保只有一个Master往共享存储中写数据
  2. 客户端fencing:确保只有一个Master可以响应客户端的请求
  3. Slave fencing:确保只有一个Master可以向Slave下发命令
  •  切换对外透明

为了保证整个切换是对外透明的,Hadoop应保证所有客户端和Slave能自动重定向到新的active master上,这通常是通过若干次尝试连接旧master不成功后,再重新尝试链接新master完成的,整个过程有一定延迟。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值