Hadoop非HA集群,如何保证NameNode挂机后集群可以正常运行

在Hadoop 1.x版本中,为了实现NameNode的高可用性,引入了AvatarNode技术。通过AvatarNode的Active和Standby模式,确保了在主节点失效时能够快速切换至备用节点,同时避免了单点故障的问题。

Hadoop1.X的时候,我么是无法给Hadoop集群做HA的机制,NameNode是一个单点的服务。那么在过去的1.X中如何保证NameNode挂机后集群还能正常运行呢?

 

通过给Hadoop做双机备份使用AvatarNode 这么个技术。

 

先来看一张图

 

 

 

 

 

这里呢,Client需要获取到block的位置,是从Active中的Node读取block位置。

 

 

两个角色

AvatarNode完全封装了NameNodeAvatarNode运行有两种模式ActiveAvatar或者

Standby Avatar

 

如果启动运行在ActiveAvatar模式,那么它就和当前NameNode功能完全一样,其实运行的代码就是NameNode的代码。运行Active Avatar模式的AvatarNode机器,保存HDFS事务日志(editlog)到一个共享的NFS

 

在另外一台机器上,启动AvatarNode的另外一个实例,运行在Standby Avatar模式。

Standby AvatarNode封装了NameNodeSecondaryNameNodeStandby AvatarNode持续的从共享的NFS filer中读取HDFS editlog,并持续的把这些事务推送到Standby AvatarNodeNameNode实例。Standby AvatarNode中的NameNode运行在SafeMode(安全模式)。原因是不能让它负责NameNode的工作,但是必须保持和NameNode同步的NameNode Metadata信息(Standby AvatarNodeNFS中读取transaction log,同时作用在自己内存中的namespace,已使得尽量和Active AvatarNode的元数据相同)。

 

 

切换过程

HDFS客户端访问NameNode通过一个虚拟IP(Virtual IP Address,注:这块其实可以使用ZK来取代)。当发生故障需要快速切换时,管理员会在机器M1上杀掉Primary AvatarNode进程,然后在机器M2上设置Standby AvatarNode作为Primary AvatarStandby AvatarNode会保证把所有提交的事务都处理完,因为Standby AvatarNode会重新打开edit log,并处理

完文件中所有的事务。这个假设是基于NFS-V3支持close-to-open cache coherency semantics

Standby AvatarNode把所有NFS filer上的事务处理完后,退出SafeMode模式。管理员将M2VIP换位M1(状态的切换,如01两个下标,将0的下标该为1),这样所有的HDFS客户端的请求就会提交到M2实例上。

 

这个failover一般情况只需要几秒钟。另外根本不需要单独一台SecondaryNameNode

AvatarNodeStandby avatar模式时,可以履行SecondaryNameNode的职责。

Standby AvatarNode持续的处理从Primary Avatar来的所有事务,在处理事务日志的空闲间隙会唤醒SecondaryNameNode进程,创建并上传一个新的checkpointCopyPrimary AvatarNode,接着在回来处理事务日志

 

Avatar DataNode

DataNodes同时和ActiveStandby通信,则Standby Avatar也有DataNode的最新的block信息,因此Standby可以在短时间内转换到Active AvatarAvatarDataNode不使用VIPAvatarNode连接。(HDFS客户端通过VIP连接AvatarNode.Avatar DataNodesZK那知道哪个AvatarActive的,因此只执行从Active Avatar来的删除、复制操作请求,对Standby传来的请求则忽略。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值