1、HDFS高可用
1.2、组件分析
-
JournalNode
共享式存储系统
特点:自身高可用、强一致性
在Hadoop-2.x使用Quorum Journal Manager(QJM)来实现操作日志的共享,QJM是一个比Zookeeper更轻量级的分布式存储系统,所使用的一致性约束条件远远不如paxos,raft等高可用的一致性算法。
-
Zookeeper
辅助namenode实现高可用,ZKFC进程在启动时在zookeeper中挂载临时节点,zookeeper利用watch机制实时监控namenode状态,并且对active的namenode进行投票选举
-
NameNode
状态:
==active:==处于该状态的namenode有元数据更新通知JournalNode更新元数据,保证数据一致,处理datanode请求
==standby:==处于该状态的namenode定时从JournalNode上获取元数据,保证数据同步
-
ZKFC
ZKFC是NameNode的一个守护进程,其中包含以下子组件:
-
ZKFailoverController(故障控制转移)
启动时,在Zookeeper为namenode注册临时节点,竞争选举Active状态的NameNode
根据HealthMonitor实时发送的数据监控Active状态的NameNode,当NameNode进程出现问题,主动退出选举
-
HealthMonitor
周期性监听NameNode状态,将状态信息发送给ZKFailoverController
-
ActiveStandbyElector
接收ZKFailoverController选举请求,选举完成回调ZKFailoverController主备切换方法,对namenode的状态进行切换
-
-
DataNode
存放文件的源数据,并实时发送源数据信息,及自身存储情况信息给namenode
2、Federation机制
2.1、什么是联邦机制
Federation是指HDFS集群可使用多个独立的NameSpace(NameNode节点管理)来满足HDFS命名空间的水平扩展 ,这些NameNode分别管理一部分数据,且共享所有DataNode的存储资源NameSpace在逻辑上是完全独立的
2.1、联邦机制解决的问题
-
HDFS集群扩展性
每个NameNode分管一部分namespace,相当于namenode是一个分布式的
-
性能更高效
多个NameNode同时对外提供服务,提供更高的读写吞吐率
-
良好的隔离性
用户可根据需要将不同业务数据交由不同NameNode管理,这样不同业务之间影响很小
-
良好的向后兼容性
已有的单Namenode的部署配置不需要任何改变就可以继续工作
依然存在的缺陷
无法解决单点故障问题
在实际生产环境中通常使用Federation+HA的方式部署集群