大数据服务器之间是怎么配合的?分布式Zookeeper集群安装与配置

大数据
后台-插件-广告管理-内容页头部广告(手机)

在阅读本文之前,建议先阅读以下文章:

1、大数据开发前要做什么准备?8台Hadoop服务器进行集群规划前配置

2、怎么在Linux上面安装jdk?大数据开发前必备软件在CentOS8上安装

本文的所有内容都是基于上述文章的设定进行后续的安装与测试。

 

Zookeeper能做什么?

 

下面这段内容摘自《从Paxos到Zookeeper 》第四章第一节的某段内容,推荐大家阅读一下:

Zookeeper最早起源于雅虎研究院的一个研究小组。在当时,研究人员发现,在雅虎内部很多大型系统基本都需要依赖一个类似的系统来进行分布式协调,但是这些系统往往都存在分布式单点问题。所以,雅虎的开发人员就试图开发一个通用的无单点问题的分布式协调框架,以便让开发人员将精力集中在处理业务逻辑上。

关于"ZooKeeper"这个项目的名字,其实也有一段趣闻。在立项初期,考虑到之前内部很多项目都是使用动物的名字来命名的(例如著名的Pig项目),雅虎的工程师希望给这个项目也取一个动物的名字。时任研究院的首席科学家Raghu Ramakrishnan开玩笑地说:"在这样下去,我们这儿就变成动物园了!"此话一出,大家纷纷表示就叫动物园管理员吧一一一因为各个以动物命名的分布式组件放在一起,雅虎的整个分布式系统看上去就像一个大型的动物园了,而Zookeeper正好要用来进行分布式环境的协调一一于是,Zookeeper的名字也就由此诞生了。

 

Zookeeper怎么工作的?

用最简单的话来描述一下Zookeeper集群用法:

1、奇数台Zookeeper服务器组成一个集群,比如:配置三台Zookeeper服务器;

2、默认三台Zookeeper的权利都是对等的;

3、三台Zookeeper共同投票选举其中一个为leader(负责写数据),剩下的是follower(负责对外提供读取数据服务);

4、三台Zookeeper可以允许有一台的故障,也就是2n+1台Zookeeper服务器最多允许n台故障;

5、剩下的无故障的2台Zookeeper(大于等于n+1台)如果没有leader,则会重新选举出一个leader(负责写数据);

6、三台Zookeeper共同负责管理所有的其他大数据服务,比如:Hadoop、HBase等;

7、比如Hadoop的双NameNode服务,如果主NameNode故障退出,从NameNode会变成主NameNode,Zookeeper会记录这个事情并对外公布这个变更;

8、任何一个客户端问Zookeeper主NameNode是哪个的时候,Zookeeper会告诉它准确的信息。

9、故障的NameNode重新启动之后,将会在Zookeeper的协调下变成从NameNode,服务正常的对外提供服务,整个过程周而复始。

 

下载安装Zookeeper

搜索引擎搜索Zookeeper找到标题为"download the zookeeper from apache mirror site"的链接,点开以后就能看到如下的内容,官方会建议咱们到国内的镜像上下载,随便点击一个官方推荐的国内镜像即可下载:

 

点开镜像网站以后,点击最新的版本目录,比如"zookeeper-3.5.6",然后下载对应的软件安装版本,为了快速部署,我们直接下载bin版本的"apache-zookeeper-3.5.6-bin.tar.gz",为了在CentOS Linux 8 里面直接安装,我们点击右键"复制链接地址"。

   

将apache-zookeeper-3.5.6-bin.tar.gz下载到本地,然后上传到CentOS Linux 8里面,或者使用"curl -O 刚才复制的链接地址"在服务器上直接下载,建议使用直接下载的方式:

 
tar -zxvf apache-zookeeper-3.5.6-bin.tar.gz
mkdir /home/hadoop/server
mkdir -p /home/hadoop/data/zkdata
mkdir -p /home/hadoop/log/zklog
mv apache-zookeeper-3.5.6-bin/ /home/hadoop/server/
ln -sf /home/hadoop/server/apache-zookeeper-3.5.6-bin/ /home/hadoop/zookeeper
chown -R hadoop:hadoop /home/hadoop/*
 

修改环境变量

vi /etc/profile

文件底部添加以下内容

export ZOOKEEPER_HOME="/home/hadoop/zookeeper"

export PATH=$ZOOKEEPER_HOME/bin:$PATH

 

Zookeeper的安装至此结束,下面开始配置它。

配置Zookeeper

由于Zookeeper类似于民主选举,每台服务器分别投票共同选举一个作为leader,剩下的都是follower。基于这个原因,官方建议服务器集群设置为奇数台,偶数台的话会有一台的资源浪费。根据咱们的集群规划:226-228为我们的Zookeeper服务器。

先用root权限操作:

先用root权限操作:

先用root权限操作:

执行下述命令加载全局环境变量,然后切换到hadoop用户开始操作:

source /etc/profile

输出PATH看看是否包含了zookeeper的路径

echo $PATH
 

su hadoop

下面以hadoop用户操作

下面以hadoop用户操作

下面以hadoop用户操作

重要的事情说三遍:

cd /home/hadoop/zookeeper/conf
cp zoo_sample.cfg zoo.cfg
vi /home/hadoop/zookeeper/conf/zoo.cfg #对应内容调整如下

内容调整如下:

dataDir=/home/hadoop/data/zkdata

dataLogDir=/home/hadoop/log/zklog/

server.226=hadoop226:2888:3888

server.227=hadoop227:2888:3888

server.228=hadoop228:2888:3888

 

如果存在的内容则修改,不存在的内容,直接添加即可,解释如下:

格式:server.serverid=host:tickpot:electionport

server:固定写法

serverid:每个服务器的指定ID(必须处于1-255之间,必须每一台机器不能重复)

host:主机名

tickpot:心跳通信端口

electionport:选举端口

最后不要忘了在每个服务器"/home/hadoop/data/zkdata/"下新建文件"myid"并把当前服务器编号写进去,举例:

echo 226 > /home/hadoop/data/zkdata/myid

以下内容只能在226-228上执行才能看到正确的结果:

zkServer.sh stop #停止Zookeeper服务
zkServer.sh start #开启Zookeeper服务
zkServer.sh status #开启Zookeeper服务

正常情况下会看到下面的内容:

ZooKeeper JMX enabled by default

Using config: /home/hadoop/zookeeper/bin/../conf/zoo.cfg

Starting zookeeper ... STARTED

 

如果启动失败,可以到"/home/hadoop/zookeeper/logs/"这个目录里面看看启动日志。根据日志的提示做对应的修改。

录入下面的命令:

jps

可以看到如下的结果:

2690 Jps

2473 QuorumPeerMain

 

查看Zookeeper的运行状态

zkServer.sh status

显示内容如下:

ZooKeeper JMX enabled by default

Using config: /home/hadoop/zookeeper/bin/../conf/zoo.cfg

Client port found: 2181. Client address: localhost.

Mode: leader (或者显示:follower)

   

注意:虽然我们在配置文件中写明了服务器的列表信息,但是,我们还是需要去每一台服务 器去启动,不是一键启动集群模式。

每启动一台查看一下状态再启动下一台

三台机器上都要有QuorumPeerMain进程,都能显示follower或者leader。

 
后台-插件-广告管理-内容页尾部广告(手机)
标签:

评论留言

我要留言

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。