NameNode中的高可用(HA)的实现

阅读: 评论:0

NameNode中的高可用(HA)的实现

NameNode中的高可用(HA)的实现

Namenode的HA主要包括:主备切换、共享日志储存。(可以拓展Zookeeper的选举算法,比如利用了强一致性)

1、在集群中,存在多个 namenode,这些 namenode处于 active或者 standby状态。

2、共享日志存储: active向共享文件系统写入日志文件, standby从共享文件系统读取日志与 active保持同步。共享文件系统一般采用的是 Quorum Journal(群体日志)设计方案。这个方案中主要涉及 JournalNode(JN)和 Quorum Journal Manager(QJM)。QJM通过调用RPC与JN集群进行通信,将日志写入到JN,同步到磁盘中。(这里面涉及一个预防脑裂的隔离操作,内置 fencing机制)。基本原理就是用2N+1台JN存储 EditLog,,每次写数据操作有大多数(>=N+1)返回成功时即认为该次写成功,数据不会丢失了。当然这个算法所能容忍的是最多有N台机器挂掉,如果多于N台挂掉,这个算法就失效了。这个原理是基于 Paxos算法。

3、主备切换:每一个 namenode运行着轻级的ZKFC即 ZKFailoverController(相当于zookeeper的客户端)。ZKFC主要包括两部 HealthMonitor和 ActiveStandbyElector.HealthMonitor启动内部线程定时调用 NameNode的 HAServiceProtocol RPC接口( monitorHealth和 getServiceStatus)),监控 NameNode的健康状态并向ZKFC反馈;如果检测到 namenode 1健康状态发生变化,ZKFC调用 ActiveStandbyElector与 zookeeper集群交互完成自动的主备选举,之后回调ZKFC的相应方法与 namenode:进行RPC通信,完成主备切换。


过程描述:

  1. HealthMonitor初始化完成之后会启动内部的线程来定时调用对应NameNode的HAServiceProtocol RPC接口,对NameNode的健康状态进行检测。
  2. HealthMonitor如果检测到NameNode的健康状态发生变化,会回调ZKFailoverController注册的相应方法进行处理。
  3. ZKFailoverController判断需要进行主备切换。
  4. 使用ActiveStandbyElector来进行自动的主备选举。
  5. 返回Zookeeper选举结果。
  6. ActiveStandbyElector返回主备状态。
  7. ZKFailoverController调用对应NameNode的HAServiceProtocol RPC 接口的方法将NameNode转换为Active状态或Standby状态。

本文发布于:2024-01-30 01:29:54,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170654939618273.html

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

标签:NameNode   HA
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23