1. 前言

在3台机器分别部署了zookeeper-3.4.5,本文操作是在此基础上进行的。部署详情参见上一篇文章

2. 客户端登录与帮助查看

  1. # 由于是集群模式,所以可以在3台机器的其中任意一台进行登录,操作结果和数据也会同步到其他机器
  2. [root@docker01 bin]# pwd
  3. /app/zookeeper-3.4./bin
  4. [root@docker01 bin]# ll
  5. total
  6. -rwxr-xr-x games Oct README.txt
  7. -rwxr-xr-x games Oct zkCleanup.sh
  8. -rwxr-xr-x games Oct zkCli.cmd
  9. -rwxr-xr-x games Oct zkCli.sh
  10. -rwxr-xr-x games Oct zkEnv.cmd
  11. -rwxr-xr-x games Oct zkEnv.sh
  12. -rwxr-xr-x games Oct zkServer.cmd
  13. -rwxr-xr-x games Oct zkServer.sh
  14. -rw-r--r-- root root May : zookeeper.out
  15. [root@docker01 bin]# ./zkCli.sh # 客户端登录
  16. ……………… # 一些摘要信息
  17. [zk: localhost:(CONNECTED) ]
  18. [zk: localhost:(CONNECTED) ] help # 客户端帮助信息
  19. ZooKeeper -server host:port cmd args
  20. stat path [watch] # 查看路径【节点】属性信息 [watch] 观察模式,有改变则会被通知,watch一次有效一次
  21. set path data [version] # 设置/修改节点信息
  22. ls path [watch] # 查看路径【节点】 [watch] 观察模式,有改变则会被通知,watch一次有效一次
  23. delquota [-n|-b] path
  24. ls2 path [watch]
  25. setAcl path acl
  26. setquota -n|-b val path
  27. history
  28. redo cmdno
  29. printwatches on|off
  30. delete path [version] # 删除节点
  31. sync path
  32. listquota path
  33. rmr path # 递归删除
  34. get path [watch] # 更具路径【节点】得到信息 [watch] 观察模式,有改变则会被通知,watch一次有效一次
  35. create [-s] [-e] path data acl # 创建节点和数据 -s 序列化【避免重复】 -e 临时数据【常用】
  36. addauth scheme auth
  37. quit # 退出客户端
  38. getAcl path
  39. close
  40. connect host:port # 可以连接到其他客户端,前提在一个集群内
  41. [zk: localhost:(CONNECTED) ]

2.1.  数据的属性说明

属性

描述

czxid

节点被创建的Zxid值

mzxid

节点被修改的Zxid值

ctime

节点被创建的时间

mtime

节点最后一次被修改的时间

versoin

节点被修改的版本号

cversion

节点的所拥有子节点被修改的版本号

aversion

节点的ACL被修改的版本号

emphemeralOwner

如果此节点为临时节点,那么它的值为这个节点拥有者的会话ID;否则,它的值为0

dataLength

节点数据域的长度

numChildren

节点拥有的子节点个数

3.  常用操作

3.1.  切换到其他客户端

  1. [zk: localhost:(CONNECTED) ] connect 172.16.1.13:
  2. ……………… # 一些摘要信息
  3. WATCHER::
  4.  
  5. WatchedEvent state:SyncConnected type:None path:null
  6.  
  7. [zk: 172.16.1.13:(CONNECTED) ]

3.2.  节点的增删改查

3.2.1.   增加节点

  1. [zk: 172.16.1.13:(CONNECTED) ] ls /
  2. [zookeeper]
  3. [zk: 172.16.1.13:(CONNECTED) ] create /zhang01/yang01 test0001 # 保证父节点存在
  4. Node does not exist: /zhang01/yang01
  5. [zk: 172.16.1.13:(CONNECTED) ]
  6. [zk: 172.16.1.13:(CONNECTED) ] create /zhang01 test01
  7. Created /zhang01
  8. [zk: 172.16.1.13:(CONNECTED) ] ls /
  9. [zookeeper, zhang01]

3.2.2.    查询节点

  1. [zk: 172.16.1.13:(CONNECTED) ] ls /
  2. [zookeeper, zhang01]
  3. [zk: 172.16.1.13:(CONNECTED) ] get /zhang01
  4. test01 # 内容
  5. cZxid = 0x100000007 # 创建数据时的事物编号
  6. ctime = Sat May :: CST # 创建时间
  7. mZxid = 0x100000007 # 修改数据时的事物编号
  8. mtime = Sat May :: CST # 修改时间
  9. pZxid = 0x100000007 # 持久化事物编号
  10. cversion = # 创建版本号
  11. dataVersion = # 数据版本
  12. aclVersion = # 权限版本
  13. ephemeralOwner = 0x0 # 持久接待
  14. dataLength = # 数据长度
  15. numChildren = # 子节点数

3.2.3.    修改节点

  1. [zk: 172.16.1.13:(CONNECTED) ] ls /
  2. [zookeeper, zhang01]
  3. [zk: 172.16.1.13:(CONNECTED) ] set /zhang01 # 修改节点信息
  4. cZxid = 0x100000007
  5. ctime = Sat May :: CST
  6. mZxid = 0x100000009
  7. mtime = Sat May :: CST
  8. pZxid = 0x100000007
  9. cversion =
  10. dataVersion =
  11. aclVersion =
  12. ephemeralOwner = 0x0
  13. dataLength =
  14. numChildren =
  15. [zk: 172.16.1.13:(CONNECTED) ] get /zhang01
  16.  
  17. cZxid = 0x100000007
  18. ctime = Sat May :: CST
  19. mZxid = 0x100000009
  20. mtime = Sat May :: CST
  21. pZxid = 0x100000007
  22. cversion =
  23. dataVersion =
  24. aclVersion =
  25. ephemeralOwner = 0x0
  26. dataLength =
  27. numChildren =

3.2.4.    节点常规删除

  1. [zk: localhost:(CONNECTED) ] ls /zhang01
  2. [test04, test03, test02, test01]
  3. [zk: localhost:(CONNECTED) ] ls /zhang01/test04 # 没有子节点
  4. []
  5. [zk: localhost:(CONNECTED) ] get /zhang01/test04
  6. date_test04
  7. cZxid = 0x10000000d
  8. ………………
  9. [zk: localhost:(CONNECTED) ] delete /zhang01/test04 # 删除子节点
  10. [zk: localhost:(CONNECTED) ] ls /zhang01 # 经常看删除成功
  11. [test03, test02, test01]
  12. [zk: localhost:(CONNECTED) ] delete /zhang01 # 如果有子节点那么不能删除
  13. Node not empty: /zhang01

3.2.5.    递归删除节点

  1. [zk: localhost:(CONNECTED) ] ls /zhang01
  2. [test03, test02, test01]
  3. [zk: localhost:(CONNECTED) ] rmr /zhang01 # 递归删除
  4. [zk: localhost:(CONNECTED) ] ls /zhang01 # 删除成功
  5. Node does not exist: /zhang01
  6. [zk: localhost:(CONNECTED) ] ls /
  7. [zookeeper]

3.3.  持久节点和临时节点

第一台客户端

  1. [zk: localhost:(CONNECTED) ] ls /
  2. [zookeeper]
  3. [zk: localhost:(CONNECTED) ] create /zhang01 yang01 # 默认持久节点
  4. Created /zhang01
  5. [zk: localhost:(CONNECTED) ] create -e /zhang02 yang02 # 创建临时节点
  6. Created /zhang02
  7. [zk: localhost:(CONNECTED) ] ls /
  8. [zookeeper, zhang02, zhang01]
  9. [zk: localhost:(CONNECTED) ] get /zhang01
  10. yang01
  11. cZxid = 0x100000018
  12. ctime = Sat May :: CST
  13. mZxid = 0x100000018
  14. mtime = Sat May :: CST
  15. pZxid = 0x100000018
  16. cversion =
  17. dataVersion =
  18. aclVersion =
  19. ephemeralOwner = 0x0 # 代表持久节点
  20. dataLength =
  21. numChildren =
  22. [zk: localhost:(CONNECTED) ] get /zhang02
  23. yang02
  24. cZxid = 0x100000019
  25. ctime = Sat May :: CST
  26. mZxid = 0x100000019
  27. mtime = Sat May :: CST
  28. pZxid = 0x100000019
  29. cversion =
  30. dataVersion =
  31. aclVersion =
  32. ephemeralOwner = 0x1639b3087ac0002 # 代表临时节点
  33. dataLength =
  34. numChildren =
  35. [zk: localhost:(CONNECTED) ] quit # 退出当前客户端【那么当前这个客户端创建的临时节点会被自动删除】

第二台客户端

  1. # 之前可以正常查到,但是当上面的客户端退出后,节点/zhang02 被自动删除了
  2. [zk: localhost:(CONNECTED) ] ls /
  3. [zookeeper, zhang01]

3.4.  节点序列化

  1. [zk: localhost:(CONNECTED) ] ls /
  2. [zookeeper, zhang01]
  3. [zk: localhost:(CONNECTED) ] ls /zhang01
  4. []
  5. [zk: localhost:(CONNECTED) ]
  6. [zk: localhost:(CONNECTED) ] create -s /zhang01/test01 test01
  7. Created /zhang01/test010000000002
  8. [zk: localhost:(CONNECTED) ] create -s -e /zhang01/test02 test02
  9. Created /zhang01/test020000000003
  10. [zk: localhost:(CONNECTED) ]
  11. [zk: localhost:(CONNECTED) ] ls /zhang01
  12. [test020000000003, test010000000002]

3.5.  watch模式节点操作

watch监听有不同的类型,有监听状态的stat ,内容的get,目录结构的ls。

3.5.1.    watch节点属性

监听自身属性改变和节点删除

  1. # 第一台客户端监听
  2. [zk: localhost:(CONNECTED) ] ls /
  3. [zookeeper, zhang01]
  4. [zk: localhost:(CONNECTED) ] stat /zhang01 watch
  5. cZxid = 0x100000018
  6. ctime = Sat May :: CST
  7. mZxid = 0x10000001e
  8. mtime = Sat May :: CST
  9. pZxid = 0x100000018
  10. cversion =
  11. dataVersion =
  12. aclVersion =
  13. ephemeralOwner = 0x0
  14. dataLength =
  15. numChildren =
  16.  
  17. # 第二台客户端操作
  18. [zk: localhost:(CONNECTED) ] set /zhang01 yyyywwwww # 修改节点信息
  19. ……………………
  20.  
  21. # 第一台客户端自动响应
  22. [zk: localhost:(CONNECTED) ]
  23. WATCHER::
  24.  
  25. WatchedEvent state:SyncConnected type:NodeDataChanged path:/zhang01

3.5.2.    watch路径

  1. # 第一台客户端
  2. [zk: localhost:(CONNECTED) ] ls /zhang01 watch
  3. []
  4.  
  5. # 第二台客户端操作
  6. [zk: localhost:(CONNECTED) ] create -e /zhang01/test01 test01
  7. Created /zhang01/test01
  8.  
  9. # 第一台客户端自动响应
  10. [zk: localhost:(CONNECTED) ]
  11. WATCHER::
  12.  
  13. WatchedEvent state:SyncConnected type:NodeChildrenChanged path:/zhang01
  14.  
  15. [zk: localhost:(CONNECTED) ]

3.5.3.    watch节点

节点自身属性改变和节点被删除都会被通知

自身属性改变

  1. # 第一台客户端
  2. [zk: localhost:(CONNECTED) ] ls /
  3. [zookeeper, zhang01]
  4. [zk: localhost:(CONNECTED) ] ls /zhang01
  5. [test01]
  6. [zk: localhost:(CONNECTED) ]
  7. [zk: localhost:(CONNECTED) ] get /zhang01/test01 watch
  8. test01
  9. cZxid = 0x100000020
  10. ………………
  11.  
  12. # 第二台客户端操作
  13. [zk: localhost:(CONNECTED) ] set /zhang01/test01 kkkk
  14. cZxid = 0x100000020
  15. ctime = Sat May :: CST
  16. ………………
  17.  
  18. # 第一台客户端自动响应
  19. [zk: localhost:(CONNECTED) ]
  20. WATCHER::
  21.  
  22. WatchedEvent state:SyncConnected type:NodeDataChanged path:/zhang01/test01
  23.  
  24. [zk: localhost:(CONNECTED) ]

节点删除

  1. # 第一台客户端
  2. [zk: localhost:(CONNECTED) ] get /zhang01/test01 watch
  3. kkkk
  4. cZxid = 0x100000020
  5. ………………
  6.  
  7. # 第二台客户端操作
  8. [zk: localhost:(CONNECTED) ] delete /zhang01/test01
  9.  
  10. # 第一台客户端自动响应
  11. [zk: localhost:(CONNECTED) ]
  12. WATCHER::
  13.  
  14. WatchedEvent state:SyncConnected type:NodeDeleted path:/zhang01/test01
  15.  
  16. [zk: localhost:(CONNECTED) ]

zookeeper-03 命令行操作的更多相关文章

  1. Zookeeper的命令行操作(三)

    Zookeeper的命令行操作 1. ZooKeeper服务命令 在准备好相应的配置之后,可以直接通过zkServer.sh 这个脚本进行服务的相关操作 1. 启动ZK服务: sh bin/zkSer ...

  2. ZooKeeper常用命令行操作

    ZooKeeper常用命令行操作 通过./zkCli.sh 打开zk的客户端进入命令行后台 ls/ls2 列出当前节点下的子节点 ls2还会列出当前节点的状态 [zk: localhost:2181( ...

  3. zookeeper客户端命令行操作

    一.命令行 (1)使用zookeeper安装bin目录下的./zkCli.sh连接到zookeeper服务器上,基本语法如下: ./zkCli.sh -timeout 0 -r -server ip: ...

  4. 第4章 ZK基本特性与基于Linux的ZK客户端命令行学习 4-1 zookeeper常用命令行操作

    ls path [watch] watch是一个监督者.quota是zookeeper的子目录.目录就是节点的意思,对于zookeeper来说它是以一个节点来说的,所以说/就是根节点,zookeepe ...

  5. Zookeeper(一)CentOS7.5搭建Zookeeper3.4.12集群与命令行操作

    一. 分布式安装部署 1.0 下载地址 官网首页: https://zookeeper.apache.org/ 下载地址: http://mirror.bit.edu.cn/apache/zookee ...

  6. Zookeeper 安装及命令行操作

    [参考文章]:[分布式]Zookeeper使用--命令行 [参考文章]:zookeeper的数据模型 [参考文章]:zookeeper ACL使用 1. 安装包下载 官方下载地址 选择一个具体的版本进 ...

  7. kafka工作流程| 命令行操作

    1.  概述 数据层:结构化数据+非结构化数据+日志信息(大部分为结构化) 传输层:flume(采集日志--->存储性框架(如HDFS.kafka.Hive.Hbase))+sqoop(关系型数 ...

  8. Kafka命令行操作及常用API

    一.Kafka命令行操作 1.查看当前集群已存在的主题 bin/kafka-topic.sh --zookeeper hd09-01:2181 --list 2.创建主题 bin/kafka-topi ...

  9. Zookeeper常用命令行及API

    一.Zookeeper常用命令行 1.启动zookeeper客户端(在启动zookeeper集群后启动进行调试) zkCli.sh 2.查看帮助.操作历史 help.history 3.查看当前Zno ...

  10. 4、Kafka命令行操作

    Kafka命令行操作 1)查看当前服务器中的所有topic [test@ip101 kafka]$ bin/kafka-topics.sh --zookeeper ip101:2181 --list ...

随机推荐

  1. 【Java基本功】一文读懂final关键字的用法

    本文主要介绍了final关键字的基本使用方法及原理 final关键字可以修饰类.方法和引用. 修饰类,该类不能被继承.并且这个类的对象在堆中分配内存后地址不可变. 修饰方法,方法不能被子类重写. 修饰 ...

  2. NAT转换、VLAN与Trunk(特典:ACL初步)

    一.NAT(网络地址转换) 即公有地址转换为私有地址 私有地址段(非公网地址,即公网不识别) A       10.0.0.0            10.255.255.255 B       17 ...

  3. Zabbix4.2.0使用Python连接企业微信报警

    目录 1. 配置企业微信 2. 脚本配置 2.1 安装python依赖的库 2.2 编写脚本 2. 搭建FTP 3. 配置Zabbix监控FTP 3.1 添加FTP模板 3.2 添加报警媒介 3.3 ...

  4. SpringMVC4集成ehcache

    前言 使用SpringMVC4集成ehcache来缓存服务器数据. 开发环境 SpringMVC4.ehcache2.6. 项目结构 SpringMVC 集成ehcache 1.pom.xml //除 ...

  5. Uboot 引导内核时加载地址与入口地址问题

    如果使用 mkimage 生成内核镜像文件的话,会在内核的前头加上了 64 bytes 的信息头,供建立 tag 之用.bootm 命令会首先判断 bootm xxx 这个指定的地址 xxx 与 -a ...

  6. Extjs4---Cannot read property 'addCls' of null 或者 el is null 关于tab关闭后再打开不显示或者报错

    做后台管理系统时遇到的问题,关于tab关闭后再打开不显示,或者报错 我在新的tabpanel中加入了一个grid,当我关闭再次打开就会报错Cannot read property 'addCls' o ...

  7. www.jqhtml.com 前端框架特效

    www.jqhtml.com * 请选择课程 初级班 (PS.HTML.CSS.静态网站项目实战) 中级班 JavaScript基础.JavaScript DOM.jQuery.JS进阶.HTML5和 ...

  8. oracle与mysql

    『创业团队最佳选择是Oracle+MongoDB,而不是MySQL』,当深蓝在QQ群里抛出这样的观点的时候,就像是在马蜂窝里丢了一串鞭炮一样热闹起来. 创业者甲: 开什么玩笑,Oracle要收钱的,太 ...

  9. Python3 系列之 编程规范篇

    编码规范 编码 如无特殊情况, 文件一律使用 UTF-8 编码 如无特殊情况, 文件头部必须加入 #--coding:utf-8-- 标识 缩进 统一使用 4 个空格进行缩进 引号 自然语言 使用双引 ...

  10. Spring基于纯注解方式的使用

    经过上篇xml与注解混合方式,对注解有了简单额了解,上篇的配置方式极大地简化了xml中配置,但仍有部分配置在xml中进行,接下来我们就通过注解的方式将xml中的配置用注解的方式实现,并最终去掉xml配 ...