HDFS的⾼可⽤机制(HA)与Hadoop联邦机制(Federation)概述
背景
分布式⽂件系统中( HDFS,Hadoop Distributed File System ),NameNode在内存中存储着整个⽂件系统的元数据信息,如⽂件数据块的地址映射、⽂件系统的命名空间、⽂件操作权限等。倘若NameNode节点主机⼀旦宕机,整个集即将瘫痪
⾼可⽤的Hadoop集
在搭建Hadoop集时,通常需要搭建多个NameNode,这样可以保证如果其中⼀个NameNode发⽣宕机,另⼀个NameNode可以迅速的补充,保证集7*24⼩时的不间断⼯作。通常,NameNode有两个状态,分别是active(响应客户端请求)与standby(待命状态,在active 状态的NameNode宕机时迅速切换)
这⾥需要区分的是NameNode与SecondaryNameNode之间的关系,SecondaryNameNode只作为分担NameNode⼯作压⼒的⾓⾊,并不能在NameNode宕机时替代NameNode。为简短篇幅,NameNode以下简称“nn”
⾼可⽤HDFS⼯作原理
HA⾃动切换机制流程
1. HealthMonitor监控nn健康状况,将结果反馈给ZKFC
2. 若nn状态出现异常,ZKFC将nn异常状况报告给ASE
3. ASE通知Zookeeper选举出新的NameNode
4. Zookeeper将选举结果返回给ASE
5. ASE向ZKFC报告选举结果
6. ZKFC完成nn间的状态切换
下⾯对各个模块进⾏说明
元数据共享存储系统
元数据共享存储系统由多个JournalNode构成。JournalNode中主要存放⽂件元数据信息,active-nn通过edits往JournalNode中写⼊⽇志数据,standby-nn负责从JournalNode中读取⽇志信息并⽣成元数据。为了保证数据不丢失,active-nn与standby-nn的元数据读写操作必须是同步的
ZKFC
ZKFC是基于Zookeeper的故障转移控制器,运⾏在每个nn中,⽤来监控nn的健康状态并在Active-nn出
现连接超时,宕机等连接失败的情况下通知ZooKeeper进⾏新的选举,完成active-nn与standby-nn间的主备切换,下⾯介绍ZKFC中的重要组件
1. HealthMonitor
ZKFC定期通过HealthMonitor对nn进⾏健康诊断,HealthMonitor负责记录nn的健康状态并向ZKFC进⾏反馈(nn状态正常或异常)
2. ActiveStandbyElectorhadoop分布式集搭建
ActiveStandByElector主要完成nn与Zookeeper间的交互,当nn在Zookeeper上的节点状态发⽣变化时,ASE负责将结果返回给ZKFC,与此同时,如果nn出现宕机,也由ASE通知Zookeeper完成选举
3. ZKFailoverController
ZKFailoverController负责协调HealthMonitor和ActiveStandbyElector对象,完成nn状态切换过程
DataNode
存储⽂件信息,定期向nn发送数据块信息,与nn建⽴⼼跳感知(向nn报告健康状况)
Hadoop的联邦机制(Federation)
背景
虽然⾼可⽤HDFS解决了nn单点故障问题,但是实际业务需求中随着业务量的增⼤,内存中的元数据会越来越多最终导致内存不⾜等问题联邦机制
为了解决内存不⾜的问题,Hadoop允许对nn进⾏横向扩展,也就是拥有多个nn,每个nn管理着各⾃的数据块。DataNode中不同的存储数据块由不同的nn进⾏管理,但因此也产⽣了问题,即联邦机制不能解决nn单点故障问题。所以,在部署环境时,应采⽤⾼可⽤(HA)+联邦机制的部署⽅案来搭建集。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。