基本概念/结构

里面资料来自兰智大数据培训资料

Zookeeper- 一个 高效的分布式协调服务
可以提供配置信息管理、命名、分布式同步、集群管理、数据库切换服务
不适合用来存储大量信息和数据,但是可以用来存储一些配置、发布和订阅少量信息。

Zookeeper集群中节点个数一半是奇数个(>=3),如果集群中Master挂掉,剩下节点在半数以上,就可以推举新的节点(leader)

其使用数据结构是tree,根节点是:“/”。Zookeeper集群中的节点,根据身份特性分leader、follower、observer。
其中leader负责客户端writer类型请求;follower负责客户端reader类型请求没参与leader选举,observer是特殊的follower,可以接收客户端reader请求,但是不会参与选举,可以用来扩容系统支撑能力提高读取速度。

Zookeeper使用的是ZAB原子消息广播协议,节点之间的一致性算法为Paxos,这是Zookeeper的灵魂。可以保证分布式环境数据的一致性。关于Paxos准备再开一篇博客再说。


分布式场景下高可用是Zookeeper的特性,可采用第三方客户端实现,即Curator框架。

安装

下载

下载 zookeeper-3.4.6.jar
将其解压并导入到slave1/2

$ tar -zxvf zookeeper-3.4.6.jar     
$ mv zookeeper-3.4.6.jar zookeeper  # 改名
$ scp -r zookeeper slave1:/root  # 传输到slave1/2
$ scp -r zookeeper slave2:/root

配置环境节点

$ vim /etc/profile
$ source /etc/profile
$ scp -r /etc/profile slave1:/etc
$ scp -r /etc/profile slave2:/etc
# 这是我的配置文件,具体修改根据自己的环境配置
export ZOOKEEPER_HOME=/root/zookeeper
export PATH=.:$JAVA_HOME/bin:$HADOOP_HOME/bin:$JPS_HOME:$HIVE_HOME/bin:$HBASE_HOME/bin:$ZOOKEEPER/bin:$PATH

修改zookeeper中配置文件

$ cd /root/zookeeper/conf
$ cp zoo_sample.cfg zoo.cfg
  • 修改三个zookeeper节点中的zoo.cfg文件,修改dataDir,添加server.0server.1server.2

在zookeeper目录中创建data目录

$ cd /root/zookeeper
$ mkdir data

在data目录中创建myid分别输入0、1、2

$ vim myid

启动zookeeper节点

$ cd /root/zookeeper/bin
$ zkServer.sh start
$ zkServer.sh status

然后就可以看见下面这张图

Mode:leader这个涉及到zookeeper内部结构中节点对leader的节点,马上对zookeeper原理进行阐述时进行详解。

一些常用的指令

$ zkCli.sh 
[zk: localhost:2181(CONNECTED) 0] ls /
# 创建test目录,并赋值
[zk: localhost:2181(CONNECTED) 1] create /test abc
Created /test
# 获取指定节点值
[zk: localhost:2181(CONNECTED) 2] get /test
abc
# 设置已存在节点值
[zk: localhost:2181(CONNECTED) 3] set /test cd
# 删除递归节点
[zk: localhost:2181(CONNECTED) 4] rmr /test
# 删除不存在子节点的节点
[zk: localhost:2181(CONNECTED) 5] delete /test/test01
最后修改:2021 年 03 月 08 日
如果觉得我的文章对你有用,请随意赞赏