ZooKeeper安装配置

僤鯓⒐⒋嵵緔 提交于 2019-12-05 04:33:37

1.什么是ZooKeeper?

Zookeeper是一个开源的分布式的,为分布式应用提供协调服务的Apache项目。

注意,这是一个协调平台,不是管理平台。类似于红绿灯,可以协调帮助道路通畅。

ZooKeeper起到了一个协调各个框架的作用。它并不是直接为我们的数据提供服务。

ZooKeeper从设计模式角度来理解:是一个基于观察者模式设计的分布式服务管理框架,他负责存储和挂历大家都关心的数据,然后接受观察者的注册,一旦这些数据的状态发生变化,ZooKeeper就将负责通知已经在ZooKeeper上注册的那些观察者做出相应的反应。

所以,ZooKeeper = 文件系统 + 通知机制

2.ZooKeeper集群特点

1)Zookeeper:一个领导者(leader),多个跟随者(follower)组成的集群。
2)Leader负责进行投票的发起和决议,更新系统状态
3)Follower用于接收客户请求并向客户端返回结果,在选举Leader过程中参与投票
4)集群中只要有半数以上节点存活,Zookeeper集群就能正常服务。
5)全局数据一致:每个server保存一份相同的数据副本,client无论连接到哪个server,数据都是一致的。
6)更新请求顺序进行,来自同一个client的更新请求按其发送顺序依次执行。
7)数据更新原子性,一次数据更新要么成功,要么失败。
8)实时性,在一定时间范围内,client能读到最新数据。

3.ZooKeeper的数据结构

ZooKeeper数据模型的结构与Unix文件系统很类似,整体上可以看作是一棵树,每个节点称做一个ZNode。每一个ZNode默认能够存储1MB的数据,每个ZNode都可以通过其路径唯一标识。

4.安装配置ZooKeeper

1、解压ZooKeeper文件到/opt/module/下

tar -xzvf zookeeper-3.4.10.tar.gz -C /opt/module/

2、配置环境变量
编辑sudo vim /etc/profile.d/my_env.sh
在内部添加如下内容:

#ZOOKEEPER_HOME
export ZOOKEEPER_HOME=/opt/module/zookeeper-3.4.10
export PATH=$PATH:$ZOOKEEPER_HOME/bin

然后重新打开一个会话,以使环境变量生效。可以通过在命令行输入zk然后按table键看是否有补全备选项来测试ZooKeeper安装是否成功。

然后分发环境变量

xsync /etc/profile.d/my_env.sh

3、配置ZooKeeper
进入配置文件的文件夹/opt/module/zookeeper-3.4.10/conf,,并将zoo_sample.cfg重命名为zoo.cfg:

cd /opt/module/zookeeper-3.4.10/conf

mv zoo_sample.cfg zoo.cfg

其实现在ZooKeeper已经可以单机启动了。(因为ZooKeeper默认的配置就是单机模式)

接下来继续配置ZooKeeper的集群模式,因为单机模式没人用…………

4、编辑zoo.cfg文件,vim zoo.cfg

将dataDir=/tmp/zookeeper更改为:(该目录的唯一要求是当前用户对该文件夹具有写权限)

dataDir=/opt/module/zookeeper-3.4.10/zkData

5、配置集群机器,每台机器分配一个不同的Serverid
在zoo.cfg配置文件最后添加如下内容:

server.2=hadoop102:2888:3888
server.3=hadoop103:2888:3888
server.4=hadoop104:2888:3888

server.x中的x即为每台机器的id,对于Serverid只有一个要求,即每台机器的serverid需各不相同即可。记住自己设置的id。

以上配置2,3,4就是Serverid

6、在zkData文件夹里新建一个myid文件,内容是本机的Serverid

没有zkData文件夹的话,创建一个zkData文件夹:

cd /opt/module/zookeeper-3.4.10
mkdir zkData

然后在zkData文件夹中新建文件myid

在myid中写入本机的id,当前机器serverid是2,所以myid文件中只写入2。

7、(可选配置)配置Zookeeper的LogDIR:配置bin/zkEnv.sh文件

vim /opt/module/zookeeper-3.4.10/bin/zkEnv.sh

ZOO_LOG_DIR="."改为ZOO_LOG_DIR="/opt/module/zookeeper-3.4.10/logs"

或者:

ZOO_LOG_DIR="${ZOOKEEPER_HOME}/logs"

8、分发ZooKeeper到集群各个机器。

xsync /opt/module/zookeeper-3.4.10/

9、到集群的另外两台机器中分别修改其serverid

echo 3 > /opt/module/zookeeper-3.4.10/zkData/myid

echo 4 > /opt/module/zookeeper-3.4.10/zkData/myid

10、启动

ZooKeeper集群官方没有给群启脚本,所以需要在每台机器上同时发送执行命令:

zkServer.sh start

关闭同理:

zkServer.sh stop

然后可以通过命令:zkServer.sh status来查看集群中各个机器的状态,其中follower为从机,leader为主机。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!