一、节点增删改查

1.1 启动服务和连接服务

  1. # 启动服务
  2. bin/zkServer.sh start
  3. #连接服务 不指定服务地址则默认连接到localhost:2181
  4. zkCli.sh -server hadoop001:2181

1.2 help命令

使用 help 可以查看所有命令及格式。

1.3 查看节点列表

查看节点列表有 ls pathls2 path 两个命令,后者是前者的增强,不仅可以查看指定路径下的所有节点,还可以查看当前节点的信息。

  1. [zk: localhost:2181(CONNECTED) 0] ls /
  2. [cluster, controller_epoch, brokers, storm, zookeeper, admin, ...]
  3. [zk: localhost:2181(CONNECTED) 1] ls2 /
  4. [cluster, controller_epoch, brokers, storm, zookeeper, admin, ....]
  5. cZxid = 0x0
  6. ctime = Thu Jan 01 08:00:00 CST 1970
  7. mZxid = 0x0
  8. mtime = Thu Jan 01 08:00:00 CST 1970
  9. pZxid = 0x130
  10. cversion = 19
  11. dataVersion = 0
  12. aclVersion = 0
  13. ephemeralOwner = 0x0
  14. dataLength = 0
  15. numChildren = 11

1.4 新增节点

  1. create [-s] [-e] path data acl #其中-s 为有序节点,-e 临时节点

创建节点并写入数据:

  1. create /hadoop 123456

创建有序节点,此时创建的节点名为指定节点名 + 自增序号:

  1. [zk: localhost:2181(CONNECTED) 23] create -s /a "aaa"
  2. Created /a0000000022
  3. [zk: localhost:2181(CONNECTED) 24] create -s /b "bbb"
  4. Created /b0000000023
  5. [zk: localhost:2181(CONNECTED) 25] create -s /c "ccc"
  6. Created /c0000000024

创建临时节点,临时节点会在会话过期后被删除:

  1. [zk: localhost:2181(CONNECTED) 26] create -e /tmp "tmp"
  2. Created /tmp

1.5 查看节点

1. 获取节点数据

  1. # 格式
  2. get path [watch]
  1. [zk: localhost:2181(CONNECTED) 31] get /hadoop
  2. 123456 #节点数据
  3. cZxid = 0x14b
  4. ctime = Fri May 24 17:03:06 CST 2019
  5. mZxid = 0x14b
  6. mtime = Fri May 24 17:03:06 CST 2019
  7. pZxid = 0x14b
  8. cversion = 0
  9. dataVersion = 0
  10. aclVersion = 0
  11. ephemeralOwner = 0x0
  12. dataLength = 6
  13. numChildren = 0

节点各个属性如下表。其中一个重要的概念是 Zxid(ZooKeeper Transaction Id),ZooKeeper 节点的每一次更改都具有唯一的 Zxid,如果 Zxid1 小于 Zxid2,则 Zxid1 的更改发生在 Zxid2 更改之前。

状态属性 说明
cZxid 数据节点创建时的事务 ID
ctime 数据节点创建时的时间
mZxid 数据节点最后一次更新时的事务 ID
mtime 数据节点最后一次更新时的时间
pZxid 数据节点的子节点最后一次被修改时的事务 ID
cversion 子节点的更改次数
dataVersion 节点数据的更改次数
aclVersion 节点的 ACL 的更改次数
ephemeralOwner 如果节点是临时节点,则表示创建该节点的会话的 SessionID;如果节点是持久节点,则该属性值为 0
dataLength 数据内容的长度
numChildren 数据节点当前的子节点个数

2. 查看节点状态

可以使用 stat 命令查看节点状态,它的返回值和 get 命令类似,但不会返回节点数据。

  1. [zk: localhost:2181(CONNECTED) 32] stat /hadoop
  2. cZxid = 0x14b
  3. ctime = Fri May 24 17:03:06 CST 2019
  4. mZxid = 0x14b
  5. mtime = Fri May 24 17:03:06 CST 2019
  6. pZxid = 0x14b
  7. cversion = 0
  8. dataVersion = 0
  9. aclVersion = 0
  10. ephemeralOwner = 0x0
  11. dataLength = 6
  12. numChildren = 0

1.6 更新节点

更新节点的命令是 set,可以直接进行修改,如下:

  1. [zk: localhost:2181(CONNECTED) 33] set /hadoop 345
  2. cZxid = 0x14b
  3. ctime = Fri May 24 17:03:06 CST 2019
  4. mZxid = 0x14c
  5. mtime = Fri May 24 17:13:05 CST 2019
  6. pZxid = 0x14b
  7. cversion = 0
  8. dataVersion = 1 # 注意更改后此时版本号为 1,默认创建时为 0
  9. aclVersion = 0
  10. ephemeralOwner = 0x0
  11. dataLength = 3
  12. numChildren = 0

也可以基于版本号进行更改,此时类似于乐观锁机制,当你传入的数据版本号 (dataVersion) 和当前节点的数据版本号不符合时,zookeeper 会拒绝本次修改:

  1. [zk: localhost:2181(CONNECTED) 34] set /hadoop 678 0
  2. version No is not valid : /hadoop #无效的版本号

1.7 删除节点

删除节点的语法如下:

  1. delete path [version]

和更新节点数据一样,也可以传入版本号,当你传入的数据版本号 (dataVersion) 和当前节点的数据版本号不符合时,zookeeper 不会执行删除操作。

  1. [zk: localhost:2181(CONNECTED) 36] delete /hadoop 0
  2. version No is not valid : /hadoop #无效的版本号
  3. [zk: localhost:2181(CONNECTED) 37] delete /hadoop 1
  4. [zk: localhost:2181(CONNECTED) 38]

要想删除某个节点及其所有后代节点,可以使用递归删除,命令为 rmr path

二、监听器

2.1 get path [watch]

使用 get path [watch] 注册的监听器能够在节点内容发生改变的时候,向客户端发出通知。需要注意的是 zookeeper 的触发器是一次性的 (One-time trigger),即触发一次后就会立即失效。

  1. [zk: localhost:2181(CONNECTED) 4] get /hadoop watch
  2. [zk: localhost:2181(CONNECTED) 5] set /hadoop 45678
  3. WATCHER::
  4. WatchedEvent state:SyncConnected type:NodeDataChanged path:/hadoop #节点值改变

2.2 stat path [watch]

使用 stat path [watch] 注册的监听器能够在节点状态发生改变的时候,向客户端发出通知。

  1. [zk: localhost:2181(CONNECTED) 7] stat /hadoop watch
  2. [zk: localhost:2181(CONNECTED) 8] set /hadoop 112233
  3. WATCHER::
  4. WatchedEvent state:SyncConnected type:NodeDataChanged path:/hadoop #节点值改变

2.3 ls\ls2 path [watch]

使用 ls path [watch]ls2 path [watch] 注册的监听器能够监听该节点下所有子节点的增加和删除操作。

  1. [zk: localhost:2181(CONNECTED) 9] ls /hadoop watch
  2. []
  3. [zk: localhost:2181(CONNECTED) 10] create /hadoop/yarn "aaa"
  4. WATCHER::
  5. WatchedEvent state:SyncConnected type:NodeChildrenChanged path:/hadoop

三、 zookeeper 四字命令

命令 功能描述
conf 打印服务配置的详细信息。
cons 列出连接到此服务器的所有客户端的完整连接/会话详细信息。包括接收/发送的数据包数量,会话 ID,操作延迟,上次执行的操作等信息。
dump 列出未完成的会话和临时节点。这只适用于 Leader 节点。
envi 打印服务环境的详细信息。
ruok 测试服务是否处于正确状态。如果正确则返回“imok”,否则不做任何相应。
stat 列出服务器和连接客户端的简要详细信息。
wchs 列出所有 watch 的简单信息。
wchc 按会话列出服务器 watch 的详细信息。
wchp 按路径列出服务器 watch 的详细信息。

更多四字命令可以参阅官方文档:https://zookeeper.apache.org/doc/current/zookeeperAdmin.html

使用前需要使用 yum install nc 安装 nc 命令,使用示例如下:

  1. [root@hadoop001 bin]# echo stat | nc localhost 2181
  2. Zookeeper version: 3.4.13-2d71af4dbe22557fda74f9a9b4309b15a7487f03,
  3. built on 06/29/2018 04:05 GMT
  4. Clients:
  5. /0:0:0:0:0:0:0:1:50584[1](queued=0,recved=371,sent=371)
  6. /0:0:0:0:0:0:0:1:50656[0](queued=0,recved=1,sent=0)
  7. Latency min/avg/max: 0/0/19
  8. Received: 372
  9. Sent: 371
  10. Connections: 2
  11. Outstanding: 0
  12. Zxid: 0x150
  13. Mode: standalone
  14. Node count: 167

更多大数据系列文章可以参见 GitHub 开源项目大数据入门指南

ZooKeeper系列(三)—— Zookeeper 常用 Shell 命令的更多相关文章

  1. HBase 安装与配置及常用Shell命令

    HBase 安装与配置 首要配置 配置时间同步(所有节点上执行) yum -y install chrony vi /etc/chrony.conf #写入(7版本用server:8版本用pool): ...

  2. Windows常用shell命令大全

    Windows常用shell命令大全 基于鼠标操作的后果就是OS界面外观发生改变, 就得多花学习成本.更主要的是基于界面引导Path与命令行直达速度是难以比拟的.另外Geek很大一部分是键盘控,而非鼠 ...

  3. Linux Shell常用shell命令

    Linux Shell常用shell命令 一.文件.目录操作命令 1.ls命令 功能:显示文件和目录的信息 ls 以默认方式显示当前目录文件列表 ls -a 显示所有文件包括隐藏文件 ls -l 显示 ...

  4. Ubuntu常用shell命令

    目录 ls cd mkdir mv cp scp rm df du chmod chown chgrp head tail screen apt-get Ubuntu常用shell命令 Ubuntu作 ...

  5. Windows常用shell命令大全(转)

    [Windows常用shell命令大全] 基于鼠标操作的后果就是OS界面外观发生改变, 就得多花学习成本.更主要的是基于界面引导Path与命令行直达速度是难以比拟的.另外Geek很大一部分是键盘控,而 ...

  6. 原 HBase 常用Shell命令

    HBase 常用Shell命令 1.进入hbase shell console $HBASE_HOME/bin/hbase shell 如果有kerberos认证,需要事先使用相应的keytab进行一 ...

  7. 【Zookeeper系列】Zookeeper命令操作(转)

    原文链接:https://www.cnblogs.com/sunddenly/p/4031881.html 一.Zookeeper的四字命令 Zookeeper支持某些特定的四字命令字母与其的交互.他 ...

  8. Zookeeper系列三:Zookeeper客户端的使用(Zookeeper原生API如何进行调用、ZKClient、Curator)和Zookeeper会话

    一.Zookeeper原生API如何进行调用 准备工作: 首先在新建一个maven项目ZK-Demo,然后在pom.xml里面引入zk的依赖 <dependency> <groupI ...

  9. Hadoop概念学习系列之Java调用Shell命令和脚本,致力于hadoop/spark集群(三十六)

    前言 说明的是,本博文,是在以下的博文基础上,立足于它们,致力于我的大数据领域! http://kongcodecenter.iteye.com/blog/1231177 http://blog.cs ...

  10. 常用shell命令中你所不熟悉的参数

    1.   ls: 类似于dos下的dir命令 ls最常用的参数有三个: -a -l -F. ls –a Linux上的文件以.开头的文件被系统视为隐藏文件,仅用ls命令是看不到他们的,而用ls -a除 ...

随机推荐

  1. 齐治运维堡垒机后台存在命令执行漏洞(CNVD-2019-17294)分析

    基本信息 引用:https://www.cnvd.org.cn/flaw/show/CNVD-2019-17294 补丁信息:该漏洞的修复补丁已于2019年6月25日发布.如果客户尚未修复该补丁,可联 ...

  2. 盘一盘 System.out.println()

    System.out.println("Hello World")是大部分程序员入门的第一行代码,也可以说是程序员们最熟悉的一行代码.大家真的深入研究过System.out.pri ...

  3. Java编程思想:File类其他方法

    import java.io.File; public class Test { public static void main(String[] args) { MakeDirectories.te ...

  4. 博客一键保存本地exe可视化界面文件

    说明 非常感谢nick老师的提点老师博客:https://home.cnblogs.com/u/nickchen121/ 项目连接 1.码云:https://gitee.com/wjup/html_t ...

  5. 浏览器和Node 中的Event Loop

    前言 js与生俱来的就是单线程无阻塞的脚本语言. 作为单线程语言,js代码执行时都只有一个主线程执行任务. 无阻塞的实现依赖于我们要谈的事件循环.eventloop的规范是真的苦涩难懂,仅仅要理解的话 ...

  6. ubuntu16.04服务器上无root权限,配置个人tensorflow环境--cuda9.0+cuDNN7+tensorflow-gpu-1.8

    本人在服务器上已经用Anconda创建好python3.5的环境,这个网上有一大堆教程.接下来是重点. 1. cuda的安装 https://developer.nvidia.com/cuda-dow ...

  7. E-R图怎么绘制

    E-R图中主要涉及到的元素有: 实体:用长方形表示 关联关系:用菱形表示 属性:用椭圆表示 参考一个例子:

  8. vue系列---vue项目(已安装vuex)中引入jquery

    vue项目中引入jquery有很多方法,这只是其中一种. 步骤如下: 1,安装jquery依赖 npm install jquery --save 如果是使用淘宝镜像则将npm改为cnpm 2,修改配 ...

  9. Anacodna之conda的使用

    yum install -y bunzip2 wget https://repo.continuum.io/archive/Anaconda2-5.0.1-Linux-x86_64.sh chmod ...

  10. Ubuntu16.04配置Django服务器环境

    本环境是使用Ubuntu16.04+Django2.1.0+python3.6+uwsgi+nginx进行配置 1. 安装python3.6 Ubuntu16.04中原本安装的是python3.5,但 ...