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的方式部署集群