基于Zookeeper的Hadoop HA集群的搭建
JunLeon——go big or go home

前言:
高可用(high availability,HA)指的是若当前工作中的机器宕机了,系统会自动处理异常,并将工作无缝地转移到其他备用机器上,以保证服务的高可靠性与可用性。
Hadoop HA是hadoop2.0后新添加的特性,包括NameNode HA和ResourceManager HA。
NameNode HA采用双NameNode进行高可用,克服hadoop1.x中的单点问题。运行后,一个NameNode处于active状态,则另一处于standby状态。active NameNode节点对外提供服务,而standby NameNode节点不对外提供服务,仅仅同步active NameNode节点的状态,以便在active NameNode节点失效时快速切换继续提供服务。
Zookeeper是一个分布式协调服务,Zookeeper即可用来保证Hadoop集群的高可用性。通过zookeeper集群与Hadoop2.X中的两个NameNode节点之间的通信,保证集群中总有一个可用的NameNode(即active NameNode),从而实现双NameNode节点构成的NameNode HA,达到HDFS高可用性。同Zookeeper也可用来保证ResourceManager HA,即实现YARN高可用性。

说明:
该篇Zookeeper的安装及Hadoop HA的配置是基于Hadoop分布式的基础上去操作的,所用的命令都是在root用户下执行,hadoop的安装路径为:/opt/hadoop-2.7.3
Hadoop分布式的安装请查看:大数据学习——Hadoop集群完全分布式的搭建(超详细)_JunLeon的博客-CSDN博客
1、安装配置Zookeeper集群
Zookeeper集群由基数台机器组成,分为leader和follower两个角色。写入数据时,要写入leader,leader同意后,再通知follower写入。客户端读取数据时,由于数据都是一样的,可以从任意一台机器上读取。而leader是选举出来的,集群中任意一台机器发现没有leader时,则会推荐自己为leader,当超过半数的机器同意它为leader时,选举结束。这样当leader宕机后很快就会选举出新的leader,保证工作正常进行。
(1)下载并上传解压Zookeeper安装包
-
环境准备
官网下载:Index of /zookeeper,自行选择版本下载即可
我使用的是zookeeper-3.4.12版本,如需下载:百度云链接:百度网盘 请输入提取码 提取码:8888
-
上传解压安装
使用XShell或者其他远程连接工具连接虚拟机进行上传到Linux系统的/opt/目录下
执行命令解压上传后的压缩包:
tar -zxvf /opt/zookeeper-3.4.12.tar.gz -C /opt/
-
配置环境变量
vi /etc/profile
以下包括jdk、hadoop的环境变量配置:
export JAVA_HOME=/opt/jdk1.8.0_161 export HADOOP_HOME=/opt/hadoop-2.7.3 export ZOOKEEPER_HOME=/opt/zookeeper-3.4.12 export PATH=$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$ZOOKEEPER_HOME/bin:$PATH添加ZOOKEEPER_HOME变量:
使配置文件生效:
source /etc/profile
(2)修改配置文件
1 生成配置文件zoo.cfg
进入
zookeeper主目录下的conf目录,将zoo_sample.cfg复制一份为zoo.cfg文件cd /opt/zookeeper-3.4.12/conf cp zoo_sample.cfg zoo.cfg
2 dataDir属性设置Zookeeper的数据存放的位置
vi zoo.cfg
# The number of milliseconds of each tick tickTime=2000 # The number of ticks that the initial # synchronization phase can take initLimit=10 # The number of ticks that can pass between # sending a request and getting an acknowledgement syncLimit=5 # the directory where the snapshot is stored. # do not use /tmp for storage, /tmp here is just # example sakes. dataDir=/tmp/zookeeper # the port at which the clients will connect clientPort=2181 # the maximum number of client connections. # increase this if you need to handle more clients #maxClientCnxns=60 # # Be sure to read the maintenance section of the # administrator guide before turning on autopurge. # # http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance # # The number of snapshots to retain in dataDir #autopurge.snapRetainCount=3 # Purge task interval in hours # Set to "0" to disable auto purge feature #autopurge.purgeInterval=1参数说明:
tickTime=2000 表示zookeeper服务器之间或客户端与服务器之间维持心跳的时间间隔,时间单位是毫秒
initLimit=10 表示Zookeeper服务器集群中连接到leader的Follower服务器初始化连接是最长能忍受多少个心跳的时间间隔数,总的时间长度就是10*2000=20秒。
syncLimit=5 表示标识leader与follower之间发送消息,请求和应答时间长度。最长不能超过多少个tickTime的时间长度,总的时间长度就是5*2000=10秒。
dataDir=/tmp/zookeeper 表示zookeeper的数据存放目录,默认在/tmp/zookeeper,此为修改项,默认情况下Zookeeper将写数据的日志文件也保存在这个目录里,也可以手动指定日志存放的目录。
clientPort=2181 表示客户端(应用程序)连接Zookeeper服务器的端口,Zookeeper会监听这个端口接受客户端的访问请求,默认为2181。

本文详细介绍了如何在Hadoop分布式集群基础上,通过Zookeeper实现HDFS和YARN的高可用性。配置包括Zookeeper集群的搭建,HadoopHA集群的节点规划,以及相关配置文件的修改,确保NameNode和ResourceManager的故障切换能力。

基于Zookeeper的Hadoop HA集群的搭建&spm=1001.2101.3001.5002&articleId=120689889&d=1&t=3&u=d7ee91149d2a4e72a305a27d4e44638a)
1万+

被折叠的 条评论
为什么被折叠?



