【博学谷学习记录】超强总结,用心分享|ZooKeeper集群环境搭建
Zookeeper作为大数据生态圈框架中非常重要的一员,单独使用Zookeeper是没有意义的。对于Zookeeper在大数据生态圈中的使用,主要是用来管理其他框架,俗称动物管理员。
本文将通过相关介绍,搭建出一个Zookeeper集群,以供后续大数据学习使用。
一、ZooKeeper基本知识
1.ZooKeeper概述
Zookeeper是一个分布式协调服务开源框架,主要用来解决分布式集群中应用系统的一致性问题。ZooKeeper本质上是一个分布式的小文件存储系统。提供类似于文件系统的目录树方式的数据存储,并且可以对树中的节点进行有效管理。
2.ZooKeeper特点
(1)全局数据一致性:集群中每个服务器保存一份相同的数据副本,client无论连接到哪个服务器,展示的数据都是一致的,这是最重要的特征;
(2)可靠性:如果消息被其中一台服务器接受,那么将被所有的服务器接受;
(3)顺序性:括全局有序和偏序两种:全局有序是指如果在一台服务器上消息a在消息b前发布,则在所有Server上消息a都将在消息b前被发布;偏序是指如果一个消息b在消息a后被同一个发送者发布,a必将排在b前面;
(4)数据更新原子性:一次数据更新要么成功(半数以上节点成功),要么失败,不存在中间状态;
(5)实时性:Zookeeper保证客户端将在一个时间间隔范围内获得服务器的更新信息,或者服务器失效的信息。
3.ZooKeeper集群角色
(1)Leader:Zookeeper集群工作的核心,事务请求(写操作)的唯一调度和处理者,保证集群事务处理的顺序性,是集群内部各个服务器的调度者。
(2)Follower:处理客户端非事务(读操作)请求,转发事务请求给Leader,参与集群Leader选举投票。
(3)Observer:观察Zookeeper集群的最新状态变化并将这些状态同步过来,其对于非事务请求可以进行独立处理,对于事务请求,则会转发给Leader服务器进行处理。不会参与任何形式的投票只提供非事务服务,通常用于在不影响集群事务处理能力的前提下提升集群的非事务处理能力。
二、ZooKeeper集群搭建
Zookeeper集群搭建指的是ZooKeeper分布式模式安装。通常由2n+1台server组成。这是为了保证Leader选举(基于Paxos算法的实现)能够得到多数的支持(过半机制),所以ZooKeeper集群的数量一般为奇数。
本文对于Zookeeper集群模式的搭建选择的是:leader+follower模式。
具体信息如下:
1.下载ZooKeeper压缩包
直接从官网http://archive.apache.org/dist/zookeeper/下载本文需要使用的ZooKeeper版本3.4.6,下载完成后,上传到Linux,node1服务器的/export/software路径下,准备安装。
2.解压ZooKeeper压缩包
在node1主机上,解压zookeeper压缩包到/export/server路径下,然后准备进行安装。
cd /export/software
tar -zxvf zookeeper-3.4.6.tar.gz -C /export/server/
3.修改配置文件
在node1主机上,修改配置文件。
cd /export/server/zookeeper-3.4.6/conf/
cp zoo_sample.cfg zoo.cfg
mkdir -p /export/server/zookeeper-3.4.6/zkdatas/
vim zoo.cfg
修改以下内容:
#Zookeeper的数据存放目录
dataDir=/export/server/zookeeper-3.4.6/zkdatas
# 保留多少个快照
autopurge.snapRetainCount=3
# 日志多少小时清理一次
autopurge.purgeInterval=1
# 集群中服务器地址
server.1=node1:2888:3888
server.2=node2:2888:3888
server.3=node3:2888:3888
4.添加myid配置
在node1主机的/export/server/zookeeper-3.4.6/zkdatas/这个路径下创建一个文件,文件名为myid ,文件内容为1。
注意:在myid文件里追加一个1,不能直接对其编辑,会出问题,只能这样的方式追加。
echo 1 > /export/server/zookeeper-3.4.6/zkdatas/myid
5.分发安装包并修改其余服务器(node2,node3)myid的值
在node1主机上,将安装包分发到其他机器。即在node1上执行以下两个命令:
scp -r /export/server/zookeeper-3.4.6/ node2:/export/server/
scp -r /export/server/zookeeper-3.4.6/ node3:/export/server/
在node2上修改myid的值为2
echo 2 > /export/server/zookeeper-3.4.6/zkdatas/myid
在node3上修改myid的值为3
echo 3 > /export/server/zookeeper-3.4.6/zkdatas/myid
6.三台服务器启动ZooKeeper服务
在node1、node2、node3三台服务器分别启动ZooKeeper服务,即在node1、node2、node3上分别执行:
/export/server/zookeeper-3.4.6/bin/zkServer.sh start
启动后分别查看启动状态,执行:
/export/server/zookeeper-3.4.6/bin/zkServer.sh status
7.配置Path环境变量
由于启动ZooKeeper服务和查看ZooKeeper服务的状态所要执行的指令太长,因此可以对其进行环境变量配置。配置后,则不需要输入“/export/server/zookeeper-3.4.6/bin/”详细路径。
分别在node1、node2、node3三台服务器中,修改/etc/proflie,添加以下内容:
export ZOOKEEPER_HOME=/export/server/zookeeper-3.4.6
export PATH=:$ZOOKEEPER_HOME/bin:$PATH
切记不要忘了:source /etc/profile
。如果不执行source指令,则配置无法及时生效。
三、总结
ZooKeeper集群搭建是整个大数据集群搭建的一个重要环节,本文尽可能详细的描述了ZooKeeper集群搭建的每一环节的必要操作。ZooKeeper的启动指令和查看指令比较繁琐,可以通过写shell脚本做到一键启动、关闭以及一键查看。