400 028 6601

建站动态

根据您的个性需求进行定制 先人一步 抢占小程序红利时代

基于ZooKeeper搭建Hadoop高可用集群的教程图解-创新互联

一、高可用简介

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

创新互联公司服务项目包括三穗网站建设、三穗网站制作、三穗网页制作以及三穗网络营销策划等。多年来,我们专注于互联网行业,利用自身积累的技术优势、行业经验、深度合作伙伴关系等,向广大中小型企业、政府机构等提供互联网行业的解决方案,三穗网站推广取得了明显的社会效益与经济效益。目前,我们服务的客户以成都为中心已经辐射到三穗省份的部分城市,未来相信会继续扩大服务区域并继续获得客户的支持与信任!

1.1 高可用整体架构

HDFS 高可用架构如下:

基于 ZooKeeper 搭建 Hadoop 高可用集群 的教程图解

图片引用自: 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 才能对外提供读写服务。

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 节点挂掉。

基于 ZooKeeper 搭建 Hadoop 高可用集群 的教程图解

1.3 NameNode 主备切换

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

基于 ZooKeeper 搭建 Hadoop 高可用集群 的教程图解

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 来进行主备选举。

基于 ZooKeeper 搭建 Hadoop 高可用集群 的教程图解

二、集群规划

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

基于 ZooKeeper 搭建 Hadoop 高可用集群 的教程图解

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

四、集群配置

4.1 下载并解压

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

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

4.2 配置环境变量

编辑profile文件:

# vim /etc/profile

增加如下配置:

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

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

# source /etc/profile

4.3 修改配置

进入${HADOOP_HOME}/etc/hadoop目录下,修改配置文件。各个配置文件内容如下:

1. hadoop-env.sh

# 指定JDK的安装位置export JAVA_HOME=/usr/java/jdk1.8.0_201/

2. core-site.xml


 
 
 fs.defaultFS
 hdfs://hadoop001:8020
 
 
 
 hadoop.tmp.dir
 /home/hadoop/tmp
 
 
 
 ha.zookeeper.quorum
 hadoop001:2181,hadoop002:2181,hadoop002:2181
 
 
 
 ha.zookeeper.session-timeout.ms
 10000
 

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


文章名称:基于ZooKeeper搭建Hadoop高可用集群的教程图解-创新互联
本文地址:http://www.bluegullmedia.com/article/cesejs.html

其他资讯

让你的专属顾问为你服务

0.0393s