Q1:什么是HA
Q2:QJM基本的原理
Q3:什么是脑裂
Q4:ZKFailoverController是用来做什么的
1、HA机制介绍
HA机制是从hadoop2.0开始引入的,之前的版本中是没有HA机制的。所谓HA,即高可用(7*24小时不中断服务),实现高可用最关键的是消除单点故障,Hadoop-HA严格来说应该分为各个组件的HA机制-HDFS的HA、Yarn的HA。hadoop2.x之后,Clouera提出了QJM/Qurom Journal Manager,这是一个基于Paxos算法实现的HDFS HA方案。
2、QJM基本的原理
基本原理就是用2N+1台 JN 存储EditLog,每次写数据操作有大多数(>=N+1)返回成功时即认为该次写成功,数据不会丢失了。当然这个算法所能容忍的是最多有N台机器挂掉,如果多于N台挂掉,这个算法就失效了。这个原理是基于Paxos算法
3、什么是脑裂
脑裂(brain-split):脑裂是指在主备切换时,由于切换不彻底或其他原因,导致客户端和Slave误以为出现两个active namenode,最终使得整个集群处于混乱状态。解决脑裂问题,通常采用隔离(Fencing)机制,包括三个方面:
a) 共享存储fencing:确保只有一个namenode往共享存储中写数据。
b) 客户端fencing:确保只有一个namenode可以响应客户端的请求。
c) Slave fencing:确保只有一个namenode可以向Slave下发命令。
4、ZKFailoverController是用来做什么的
Hadoop提供了ZKFailoverController角色,部署在每个NameNode的节点上,作为一个deamon进程, 简称zkfc。
zkfc的职责简单来说就是监测NameNode,当Active的NameNode挂掉之后启动备用的NameNode标记为Active,通过znode锁来保证只有一个NameNode处于Active。