Linux安装Zookeeper及相关操作节点命令

一、zookeeper安装

  1. 配置JAVA环境,检验环境
java ‐version
  1. 下载解压 zookeeper
# 下载
wget https://mirror.bit.edu.cn/apache/zookeeper/zookeeper‐3.5.8/apache‐zookeepe
r‐3.5.8‐bin.tar.gz
# 解压
tar ‐zxvf apache‐zookeeper‐3.5.8‐bin.tar.gz
cd apache‐zookeeper‐3.5.8‐bin
  1. 重命名配置文件 zoo_sample.cfg
cp zoo_sample.cfg zoo.cfg
  1. 启动zookeeper
# 可以通过 bin/zkServer.sh 来查看都支持哪些参数
bin/zkServer.sh start conf/zoo.cfg
  1. 检测是否启动成功
echo stat | nc 192.168.109.200 // 前提是配置文件中中讲 stat 四字命令设置了了白名单

4lw.commands.whitelist=stat
  1. 连接服务器
bin/zkCli.sh ‐server ip:port

二、使用命令行操作zookeeper

输入命令 help 查看zookeeper所支持的所有命令

1 [zk: localhost:2181(CONNECTED) 80] help
2 ZooKeeper ‐server host:port cmd args
3 addauth scheme auth
4 close
5 config [‐c] [‐w] [‐s]
6 connect host:port
7 create [‐s] [‐e] [‐c] [‐t ttl] path [data] [acl]
8 delete [‐v version] path
9 deleteall path
10 delquota [‐n|‐b] path
11 get [‐s] [‐w] path
12 getAcl [‐s] path
13 history
14 listquota path
15 ls [‐s] [‐w] [‐R] path
16 ls2 path [watch]
17 printwatches on|off
18 quit
19 reconfig [‐s] [‐v version] [[‐file path] | [‐members serverID=host:port1:port
2;port3[,...]*]] | [‐add serverId=host:port1:port2;port3[,...]]* [‐remove serverI
d[,...]*]
20 redo cmdno
21 removewatches path [‐c|‐d|‐a] [‐l]
22 rmr path
23 set [‐s] [‐v version] path data
24 setAcl [‐s] [‐v version] [‐R] path acl
25 setquota ‐n|‐b val path
26 stat [‐w] path
27 sync path
  1. 创建zookeeper 节点命令
create [‐s] [‐e] [‐c] [‐t ttl] path [data] [acl]

中括号为可选项,没有则默认创建持久化节点
-s: 顺序节点
-e: 临时节点
-c: 容器节点
-t: 可以给节点添加过期时间,默认禁用,需要通过系统参数启用

  1. 创建节点
create /test‐node some‐data

没有加任何可选参数,创建的就是持久化节点

  1. 查看节点
get /test‐node
  1. 修改节点数据
set /test‐node some‐data‐changed
  1. 查看节点状态信息
stat /test‐node

在这里插入图片描述

  • stat
    • cZxid:创建znode的事务ID(Zxid的值)
    • mZxid:最后修改znode的事务ID
    • pZxid:最后添加或删除子节点的事务ID(子节点列表发生变化才会发生改变)
    • ctime:znode创建时间
    • mtime:znode最近修改时间
    • dataVersion:znode的当前数据版本
    • cversion:znode的子节点结果集版本(一个节点的子节点增加、删除都会影响这个版本)
    • aclVersion:表示对此znode的acl版本
    • ephemeralOwner:znode是临时znode时,表示znode所有者的 session ID。 如果znode不是临时znode,则该字段设置为零
    • dataLength:znode数据字段的长度
    • numChildren:znode的子znode的数量
  1. 查看节点状态信息同时查看数据
get -s /test‐node

在这里插入图片描述
根据状态数据中的版本号有并发修改数据实现乐观锁的功能
客户端首先获取版本信息

get -s /node-test

在这里插入图片描述
/test-node 当前的数据版本是 1 , 这时客户端 用 set 命令修改数据的时候可以把版本号带上

set -v 1 /node-test changeData

如果在执行上面 set命令前, 有人修改了数据,zookeeper 会递增版本号, 这个时候,如果再用以前的版本号去修改,将会导致修改失败,报如下错误
在这里插入图片描述
zookeeper是以节点组织数据的,没有相对路径这么一说,所有的节点一定是以 / 开头

create /test‐node/test‐sub‐node

查看子节点信息,比如根节点下面的所有子节点, 加一个大写 R 可以查看递归子节点列表

 ls /
  1. 查看 /test-node 下面所有的子节点
ls /test‐node
  1. 创建临时节点
create ‐e /ephemeral data

create 后跟一个 -e 创建临时节点 , 临时节点不能创建子节点

  1. 创建顺序节点,加参数 -s
create /seq‐parent data // 创建父目录
create ‐s /seq‐parent/ data // 创建顺序节点。顺序节点将再seq‐parent 目录下面,顺序递增
  1. 创建临时顺序节点
create ‐s ‐e /ephemeral‐node/前缀‐
  1. 创建容器节点
create ‐c /container

容器节点主要用来容纳字节点,如果没有给其创建子节点,容器节点表现和持久化节点一样,如果给容器节点创建了子节点,后续又把子节点清空,容器节点也会被zookeeper删除

三、事件监听机制

针对节点的监听:一定事件触发,对应的注册立刻被移除,所以事件监听是一次性的

get ‐w /path // 注册监听的同时获取数据
stat ‐w /path // 对节点进行监听,且获取元数据信息

在这里插入图片描述
针对目录的监听,目录的变化,会触发事件,且一旦触发,对应的监听也会被移除,后续对节点的创建没有触发监听事件

ls ‐w /path

在这里插入图片描述
针对递归子目录的监听

ls ‐R ‐w /path : ‐R 区分大小写,一定用大写

如下对/test 节点进行递归监听,但是每个目录下的目录监听也是一次性的,如第一次在/test 目录下创建节点时,触发监听事件,第二次则没有,同样,因为时递归的目录监听,所以在/test/sub0下进行节点创建时,触发事件,但是再次创建/test/sub0/subsub1节点时,没有触发事件
在这里插入图片描述

  • Zookeeper事件类型
    1. None: 连接建立事件
    2. NodeCreated: 节点创建
    3. NodeDataChanged:节点数据变化
    4. NodeChildrenChanged:子节点列表变化
    5. DataWatchRemoved:节点监听被移除
    6. ChildWatchRemoved:子节点监听被移除
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值