Hadoop 高可用 (High Availability) 分为 HDFS 高可用和 YARN 高可用,两者的实现基本类似,但 HDFS NameNode 对数据存储及其一致性的要求比 YARN ResourceManger 高得多,所以它的实现也更加复杂,下面给大家详细介绍,感兴趣的一起看看吧
一、高可用简介

Hadoop 高可用 (High Availability) 分为 HDFS 高可用和 YARN 高可用,两者的实现基本类似,但 HDFS NameNode 对数据存储及其一致性的要求比 YARN ResourceManger 高得多,所以它的实现也更加复杂,故下面先进行讲解:

1.1 高可用整体架构

HDFS 高可用架构如下:

图片引用自: https://www.edureka.co/blog/how-to-set-up-hadoop-cluster-with-hdfs-high-availability/

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 上报数据块的位置信息。
1.2 基于 QJM 的共享存储系统的数据同步机制分析

目前 Hadoop 支持使用 Quorum Journal Manager (QJM) 或 Network File System (NFS) 作为共享的存储系统,这里以 QJM 集群为例进行说明:Active NameNode 首先把 EditLog 提交到 JournalNode 集群,然后 Standby NameNode 再从 JournalNode 集群定时同步 EditLog,当 Active NameNode 宕机后, Standby NameNode 在确认元数据完全同步之后就可以对外提供服务。

需要说明的是向 JournalNode 集群写入 EditLog 是遵循 “过半写入则成功” 的策略,所以你至少要有3个 JournalNode 节点,当然你也可以继续增加节点数量,但是应该保证节点总数是奇数。同时如果有 2N+1 台 JournalNode,那么根据过半写的原则,最多可以容忍有 N 台 JournalNode 节点挂掉。

1.3 NameNode 主备切换

NameNode 实现主备切换的流程下图所示:

HealthMonitor 初始化完成之后会启动内部的线程来定时调用对应 NameNode 的 HAServiceProtocol RPC 接口的方法,对 NameNode 的健康状态进行检测。

HealthMonitor 如果检测到 NameNode 的健康状态发生变化,会回调 ZKFailoverController 注册的相应方法进行处理。

如果 ZKFailoverController 判断需要进行主备切换,会首先使用 ActiveStandbyElector 来进行自动的主备

ActiveStandbyElector 与 Zookeeper 进行交互完成自动的主备

ActiveStandbyElector 在主备完成后,会回调 ZKFailoverController 的相应方法来通知当前的 NameNode 成为主 NameNode 或备 NameNode。

ZKFailoverController 调用对应 NameNode 的 HAServiceProtocol RPC 接口的方法将 NameNode 转换为 Active 状态或 Standby 状态。

1.4 YARN高可用

YARN ResourceManager 的高可用与 HDFS NameNode 的高可用类似,但是 ResourceManager 不像 NameNode ,没有那么多的元数据信息需要维护,所以它的状态信息可以直接写到 Zookeeper 上,并依赖 Zookeeper 来进行主备

二、集群规划

按照高可用的设计目标:需要保证至少有两个 NameNode (一主一备) 和 两个 ResourceManager (一主一备) ,同时为“过半写入则成功”的原则,需要至少要有3个 JournalNode 节点。这里使用三台主机进行搭建,集群规划如下:

三、前置条件所有服务器都安装有JDK,安装步骤可以参见:Linux下JDK的安装;搭建好ZooKeeper集群,搭建步骤可以参见:Zookeeper单机环境和集群环境搭建所有服务器之间都配置好SSH免密登录。四、集群配置4.1 下载并解压

下载Hadoop。这里我下载的是CDH版本Hadoop,下载地址为:http://archive.cloudera.com/cdh5/cdh/5/

# tar -zvxf hadoop-2.6.0-cdh5.15.2.tar.gz

4.2 配置环境变量

编辑profile文件:

# vim /etc/profile

增加如下配置:

export HADOOP_HOME=/usr/app/hadoop-2.6.0-cdh5.15.2export PATH=${HADOOP_HOME}/bin:$PATH

执行source命令,使得配置立即生效:

centos7下搭建ZooKeeper3.4中间件常用命令小结SpringCloud用Zookeeper搭建配置中心的方法在Linux下搭建Zookeeper管理中心步骤分享ActiveMQ基于zookeeper的主从(levelDB Master/Slave)搭建Zookeeper 单机环境和集群环境搭建
最新资讯
卫星成功发射 “星链”变身SpaceX摇钱树

卫星成功发射 “星链

对SpaceX来说,它的目标是火星或者人类的未来,但对“星链
苹果预计无法实现2020财年一季度营收目标

苹果预计无法实现2020

2月18日,苹果公司发布了最新的一季度财务业绩指引,宣布
取快递“灵魂三问”:到了吗?怎么取?小哥送上门?

取快递“灵魂三问”:到

微博话题“取快递堪比谍战剧”登上热搜榜,用汽车后备箱
资本继续砸钱 在线教育竞争加强

资本继续砸钱 在线教

疫情影响下,线下教培机构纷纷转至线上,在线教育行业迎来
SpaceX:将在两年内运送4名乘客进入太空

SpaceX:将在两年内运送

太空探索技术公司(SpaceX)周二宣布,该公司将用其载人太空
戴尔将以20.8亿美元价格出(bu)售(mai)旗下网络安全部门

戴尔将以20.8亿美元价

戴尔科技公司周二称,该公司将以20.8亿美元的价格将旗下
最新文章
linux中批量添加文件前缀的操作方法

linux中批量添加文件

这篇文章主要介绍了linux中批量添加文件前缀的操作方
Linux安装与卸载Tomcat8的详细图文教程

Linux安装与卸载Tomca

这篇文章主要介绍了Linux安装与卸载Tomcat8的详细图文
Linux bridge桥接两个VirtualBox虚拟网络的方法步骤

Linux bridge桥接两个

这篇文章主要介绍了Linux bridge桥接两个VirtualBox虚
在 awk 中使用循环

在 awk 中使用循环

awk 脚本有三个主要部分:BEGIN 和 END 函数(都可选),用户
Linux tee命令使用详解

Linux tee命令使用详

这篇文章主要介绍了Linux tee命令使用详解,文中通过示
docker 使用mysqldump命令备份导出项目中的mysql数据

docker 使用mysqldump

这篇文章主要介绍了docker 使用mysqldump命令备份导出
炸金花 传奇私服 江西快3 炸金花