Zookeeper:基础组件
一:功能介绍
1.可以为客户端管理少量数据(k, v)格式
2.可以为客户端监听指定数据节点的状态并在数据节点发生变化时,通知客户端
二:选举机制
投票:得票大于zookeeper集群1/2当选 leader
zookeeper 集群通常设置奇数台节点(3或5台),每台节点拥有自身id即myid,进程名为QuorumpeerMain。
- 因为每台机器启动时间存在延迟,所以当第一台机器启动时,首先会访问2888端口,查看是否存在leader,如果存在自动成为follower,否则访问3888端口,对myid大的进行投票,因为刚启动只有一台节点,所以投票给自己。
- 当第二台节点启动时,同样先访问2888端口,没有leader就在3888端口进行投票,投给myid大的,即自己;节点一跟票给节点二。
- 如果一共只有三个节点,第二个当选leader。第三个节点启动访问2888端口自动成为follower。
三:Zookeeper配置
- 下载
下载地址:https://zookeeper.apache.org/releases.html - 初始化配置
我这边安装在/opt/software中,解压后修改conf下的zoo_sample.cfg文件,重新拷贝一份,修改名称为zoo.cfg,在其中修改本地文件目录以及分布节点和端口号
紧接着在mas的zookeeper dataDir 中生成一个myid文件 内容为 1;s1 myid文件为2;s2为3。 - 启动
开发自动化运行脚本
加权限 chmod +x start-zk.sh
运行 ./start-zk.sh 并观察状态 一个为leader 两个follower则为启动成功 - 报错
启动过程中可能会报Error contacting service. It is probably not running.的错误
原因可能为集群未启动,检查conf中的zoo.cfg配置,可以把映射名称改成主机id;
检查myid文件是否和配置文件匹配;
命令行输入 netstat -nltp 显示端口是否启动,如果2181,2888,3888已被占用则更换端口
四:命令行客户端功能测试
- 启动
bin/zkCli.sh
- 命令
进入客户端后输入 help显示命令
常用命令-
zkCli.sh -server s1:2181
选择指定节点开启客户端 -
stat 与 get
stat与get同为展示目录信息,get可以存放的数据
-
set
set 更改已存路径的数据,若路径不存在无法自动新建
-
ls 与 ls2
ls 只展示该路径下子节点,ls2在ls基础上多加自身信息
-
quota
quota 为存储路径的配额信息,存储在/zookeeper/quota中。配额信息可以通过setquota设置,它有两个参数:
-n 限制此节点最大可拥有多少个子节点(包含自身节点)
-b 限制此节点数据存储字节量
但这个限制只会在zookeeper.out中以WARN级别显示,客户端不会报实际错误
zookeeper.out
-b 同理
delquota 删除已创建的配额信息,也是-n -b参数
注意:rmr删除路径数据不会删除该路径保存的quota数据,需要delquota手动删除 -
create与rmr
create 创建路径并赋值
rmr 删除路径与数据,无法删除路径的配额信息
-