金华建设公司网站,网页制作的毕业设计论文,手机网页设计用什么软件,如何注册自己的域名一、Hadoop高可用简介
Hadoop 高可用 (High Availability) 分为 HDFS 高可用和 YARN 高可用#xff0c;两者的实现基本类似#xff0c;但 HDFSNameNode 对数据存储及其一致性的要求比 YARN ResourceManger 高得多#xff0c;所以它的实现也更加复杂
1、HDFS系统高可用简介…一、Hadoop高可用简介
Hadoop 高可用 (High Availability) 分为 HDFS 高可用和 YARN 高可用两者的实现基本类似但 HDFSNameNode 对数据存储及其一致性的要求比 YARN ResourceManger 高得多所以它的实现也更加复杂
1、HDFS系统高可用简介 HDFS高可用的核心NameNode高可用部署多个NameNode同时实现数据的同步和故障切换
HDFS 高可用架构主要由以下组件所构成
【Active NameNode 和 Standby NameNode】两台 NameNode 形成互备一台处于 Active 状态为主NameNode另外一台处于 Standby 状态为备 NameNode只有主 NameNode 才能对外提供读写服务。
【主备切换控制器 ZKFailoverController】ZKFailoverController 作为独立的进程运行对 NameNode 的主备切换进行总体控制。ZKFailoverController 能及时检测到 NameNode 的健康状况在主 NameNode 故障时借助 Zookeeper 实现自动的主备选举和切换当然 NameNode 目前也支持不依赖于 Zookeeper 的手动主备切换。
【Zookeeper 集群】为主备切换控制器提供主备选举支持。
【共享存储系统】共享存储系统是实现 NameNode 的高可用最为关键的部分共享存储系统保存了NameNode 在运行过程中所产生的 HDFS 的元数据。主 NameNode 和 NameNode 通过共享存储系统实现元数据同步。在进行主备切换的时候新的主 NameNode 在确认元数据完全同步之后才能继续对外提供服务。
【DataNode 节点】除了通过共享存储系统共享 HDFS 的元数据信息之外主 NameNode 和备 NameNode还需要共享 HDFS 的数据块和 DataNode 之间的映射关系。DataNode 会同时向主 NameNode 和备NameNode 上报数据块的位置信息。
二、HDFS的NameNode高可用方案实现
目前主流方式基于 QJM 的共享存储系统的数据同步机制分析目前 Hadoop 支持使用 Quorum Journal Manager (QJM) 或 Network File System (NFS) 作为共享的存储系统这里以 QJM 集群为例进行说明Active NameNode 首先把 EditLog 提交到 JournalNode 集群然后 StandbyNameNode 再从 JournalNode 集群定时同步 EditLog当 Active NameNode 宕机后 Standby NameNode 在确认元数据完全同步之后就可以对外提供服务
JournalNode 集群写入 EditLog 是遵循 “过半写入则成功” 的策略所以你至少要有 3 个JournalNode 节点当然你也可以继续增加节点数量但是应该保证节点总数是奇数。同时如果有 2N1 台JournalNode那么根据过半写的原则最多可以容忍有 N 台 JournalNode 节点挂掉 1、 NameNode 主备切换 NameNode 实现主备切换的流程下图所示 2、具体流程 (1)、HealthMonitor 初始化完成之后会启动内部的线程来定时调用对应 NameNode 的 HAServiceProtocol RPC接口的方法对 NameNode 的健康状态进行检测
(2)、 HealthMonitor 如果检测到 NameNode 的健康状态发生变化会回调 ZKFailoverController 注册的相应方法进行处理。
(3)、 如果 ZKFailoverController 判断需要进行主备切换会首先使用 ActiveStandbyElector 来进行自动的主备选举。
(4)、ActiveStandbyElector 与 Zookeeper 进行交互完成自动的主备选举。5. ActiveStandbyElector 在主备选举完成后会回调ZKFailoverController 的相应方法来通知当前的NameNode 成为主 NameNode 或备 NameNode。
(5)、 ZKFailoverController 调用对应 NameNode 的 HAServiceProtocol RPC 接口的方法将 NameNode 转换为Active 状态或 Standby 状态。