目录
[Zookeeper 是一个开源的分布式协调服务框架 ,主要用来解决分布式集群中应用系统的一致性问题和数据管理问题。可以从设计角度认知Zookeeper是一个基于观察者模式设计的分布式服务管理框架,它负责存储和管理大家都关心的数据,然后接受观察者的注册,一旦这些数据发生变化,Zookeeper将负责通知注册在其之上的那些观察者作出相应的操作,Zookeeper即等于文件系统和通知机制。](#Zookeeper 是一个开源的分布式协调服务框架 ,主要用来解决分布式集群中应用系统的一致性问题和数据管理问题。可以从设计角度认知Zookeeper是一个基于观察者模式设计的分布式服务管理框架,它负责存储和管理大家都关心的数据,然后接受观察者的注册,一旦这些数据发生变化,Zookeeper将负责通知注册在其之上的那些观察者作出相应的操作,Zookeeper即等于文件系统和通知机制。)
[1 下载zookeeper的压缩包](#1 下载zookeeper的压缩包)
[2 解压](#2 解压)
[3 修改配置文件](#3 修改配置文件)
[4 添加myid配置](#4 添加myid配置)
[5 安装包分发并修改myid的值 分布式](#5 安装包分发并修改myid的值 分布式)
[6 配置环境变量](#6 配置环境变量)
[7 三台机器启动zookeeper服务](#7 三台机器启动zookeeper服务)
[8 如何关闭zookeeper集群](#8 如何关闭zookeeper集群)

Zookeeper 是一个开源的分布式协调服务框架 ,主要用来解决分布式集群中应用系统的一致性问题和数据管理问题。可以从设计角度认知Zookeeper是一个基于观察者模式设计的分布式服务管理框架,它负责存储和管理大家都关心的数据,然后接受观察者的注册,一旦这些数据发生变化,Zookeeper将负责通知注册在其之上的那些观察者作出相应的操作,Zookeeper即等于文件系统和通知机制。
注意事项:三台机器一定要保证时钟同步
使用场景 搭建hadoop高可用
分布式协调服务 管理其他服务
搭建高可用时,需要至少两个hadoop服务
一主一备;主服务对外提供业务功能 备用等待主服务不可用器,启用备用服务对外提供业务功能
0 表示 宕机
1 表是正在运行
1.zookeeper的服务角色
-
leader 管理者 负责管理follower,处理所的事务请求(保存,修改,删除)
-
follower 追随者 负责选举和数据的同步和获取
-
observer 观察者 数据的同步和获取 需要在配置文件指定才会生成(优化的读取数据的一张形式)
2.数据存储
zookeeper在进行数据存储时,所有事务都会交给leader角色处理,leader发起投票,只要超过一般的follower同意,leader就会将数据同步给所有的follower。这是所有follower的数据时一致的
-
一致性 所有的follower数据是一样的
-
顺序性 数据的请求执行的按照顺序执行
-
原子性 每个请求都保证完整执行,不会被中断,
-
实时性 数据最终会同步给所有的follower
3.数据读取
访问任意一个服务都可以
4.zookeeper集群安装
1 下载zookeeper的压缩包
-
我们在这个网址下载我们使用的zk版本为apache-zookeeper-3.6.2
-
下载完成之后,上传到我们的node01的/itheima/soft路径下准备进行安装
2 解压
-
node01执行以下命令解压zookeeper的压缩包到node01服务器的/itheima/install路径下去,然后准备进行安装
cd /itheima/soft
tar -zxvf apache-zookeeper-3.6.2-bin.tar.gz -C /itheima/install/
3 修改配置文件
-
第一台机器修改配置文件
cd /itheima/install/apache-zookeeper-3.6.2-bin/conf
mkdir -p /itheima/install/apache-zookeeper-3.6.2-bin/zkdatas
cp zoo_sample.cfg zoo.cfg -
用
vim zoo.cfg修改文件,修改如下属性值dataDir=/itheima/install/apache-zookeeper-3.6.2-bin/zkdatas
autopurge.snapRetainCount=3
autopurge.purgeInterval=1
#文件末尾增加如下三行
server.1=node01:2888:3888
server.2=node02:2888:3888
server.3=node03:2888:3888
4 添加myid配置
-
在第一台机器的/itheima/install/apache-zookeeper-3.6.2-bin/zkdatas/这个路径下创建一个文件,文件名为myid ,文件内容为1
echo 1 > /itheima/install/apache-zookeeper-3.6.2-bin/zkdatas/myid
5 安装包分发并修改myid的值 分布式
-
第一台机器上面执行以下两个命令
scp -r /itheima/install/apache-zookeeper-3.6.2-bin/ node02:/itheima/install/
scp -r /itheima/install/apache-zookeeper-3.6.2-bin/ node03:/itheima/install/ -
==第二台==机器上修改myid的值为2;直接在第二台机器任意路径执行以下命令
echo 2 > /itheima/install/apache-zookeeper-3.6.2-bin/zkdatas/myid
-
==第三台==机器上修改myid的值为3;直接在第三台机器任意路径执行以下命令
echo 3 > /itheima/install/apache-zookeeper-3.6.2-bin/zkdatas/myid
6 配置环境变量
-
三台节点都配置/etc/profile文件
sudo vim /etc/profile
export ZK_HOME=/itheima/install/apache-zookeeper-3.6.2-bin
export PATH=PATH:ZK_HOME/bin -
三台节点,让新添环境变量生效(hadoop用户下执行)
source /etc/profile
7 三台机器启动zookeeper服务
-
三台机器启动zookeeper服务;这个命令三台机器都要执行
zkServer.sh start
-
查看启动状态
zkServer.sh status
一个zkServer的状态要么是follower,要么是leader
三个节点中,一个节点为leader,另外两个为follower,类似下图
- jps每个服务器上有一个QuorumPeerMain进程
8 如何关闭zookeeper集群
-
三个节点运行
zkServer.sh stop
==提醒:如果要关闭电脑时,清一定要按照以下顺序操作,否则集群可能会出问题==
-
关闭zookeeper集群
-
关闭虚拟机
-
关闭电脑