zookeeper常用命令
- 1. 下载安装
- 2. 配置说明
- 2.1 配置
- 3. zookeeper的常见命令
- 3.1 server端启动停止等命令
- 3.2 客户端连接等命令
- 3.3 客户端简单常用命令
- 3.3.1 查看目录(查看数据结构)
- 3.3.2 删除目录
- 3.3.3 创建目录
- 3.3.4 创建目录并写入值 + 查看节点值
- 3.3.5 设置节点值
- 3.3.6 查询节点
- 3.3.6.1 普通查询
- 3.3.6.1.1 普通简单查询
- 3.3.6.1.2 普通递归查询
- 3.3.6.2 查询节点的详细信息
- 3.3.6.3 查询节点的详细信息2
- 3.3.7 创建持久序号节点
- 3.3.8 创建临时节点
- 3.4 权限设置——创建权限节点
- 3.4.1 步骤
- 3.4.2 解释
- 4. zookeeper 内部的数据模型
- 4.1 数据结构模型图
- 5.
1. 下载安装
- 可以参考下面的文章:
zookeeper安装与使用(win+linux).
2. 配置说明
2.1 配置
- 如下:
# The number of milliseconds of each tick # zookeeper时间配置中的基本单位(毫秒) tickTime=2000# The number of ticks that the initial # synchronization phase can take # 允许 follower 初始化连接到 leader 最大时长,它表示tickTime时间倍数,即:initLimit * tickTime initLimit=10# The number of ticks that can pass between # sending a request and getting an acknowledgement # 允许 follower 与 leader 数据同步最大时长,它表示tickTime时间倍数 syncLimit=5# the directory where the snapshot is stored. # do not use /tmp for storage, /tmp here is just # example sakes. # zookeeper 数据存储目录及日志保存目录(如果没有指明dataLogDir,则日志也保存到这个文件夹中) # dataDir=/tmp/zookeeper dataDir=/home/susu/soft/softWare/zk/apache-zookeeper-3.5.9-bin/dataDir# the port at which the clients will connect # 对客户端提供的端口号 clientPort=2181# the maximum number of client connections. # increase this if you need to handle more clients # 单个客户端与zookeeper最大并发连接数 # maxClientCnxns=60# Be sure to read the maintenance section of the # administrator guide before turning on autopurge. # # http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance # # The number of snapshots to retain in dataDir # 保存数据快照数量,之外的将会被清除 # autopurge.snapRetainCount=3# Purge task interval in hours # Set to "0" to disable auto purge feature # 自动触发清除时间间隔,单位为小时。默认为0,表示不自动清除 # autopurge.purgeInterval=1
3. zookeeper的常见命令
3.1 server端启动停止等命令
-
启动
- 不指定配置文件启动
./zkServer.sh start #进入bin目录下,直接执行此命令
- 指定配置文件启动
./zkServer.sh start ../conf/zoo.cfg
- 不指定配置文件启动
-
停止
./zkServer.sh stop # 不指定文件 ./zkServer.sh stop ../conf/zoo.cfg # 指定文件
-
查看zk服务器的状态
./zkServer.sh status
3.2 客户端连接等命令
- 启动server之后,连接客户端,连接客户端命令
./zkCli.sh./zkCli.sh -server 127.0.0.1:2181
- 退出客户端命令:
quit # 注意:不加分号
3.3 客户端简单常用命令
3.3.1 查看目录(查看数据结构)
- 如下:
ls /
3.3.2 删除目录
- 删除目录
delete /aa # 下面没有子节点的,可以直接用 delete deleteall /手机 # 下面有子节点的,用 deleteall
3.3.3 创建目录
- 直接创建目录
create /狗狗 create /狗狗/边牧 create /狗狗/边牧/麦兜
3.3.4 创建目录并写入值 + 查看节点值
- 如下:
create /骆驼 园区2号 get /骆驼
3.3.5 设置节点值
- 如下:
set /猩猩 园外区-1号
3.3.6 查询节点
3.3.6.1 普通查询
3.3.6.1.1 普通简单查询
- 如下:
get /骆驼 # 查询节点值 ls /狗狗/边牧 # 查询其下的子节点
3.3.6.1.2 普通递归查询
- 如下:
ls -R /
3.3.6.2 查询节点的详细信息
- 查询含节点值的详细信息,如下:
get -s /猩猩
- 解释:
- 第一行显示:该节点的值
- cZxid:创建节点的事务ID
- ctime:创建节点的时间
- mZxid:修改节点的事务ID
- mtime:修改节点的时间(最近修改时间)
- pZxid:添加和删除子节点的事务ID
- cversion:cversion是指节点的子节点版本号,也就是说当一个节点的子节点发生变化时,cversion会自增。(即:每新增或删除一个子节点时,版本➕1)
- dataVersion:dataVersion是指节点数据的版本号,当一个节点的数据发生变化时,dataVersion会自增。每更新一次数据(set一次即更新节点值),版本会➕1
- aclVersion:此节点的权限版本
- ephemeralOwner:如果当前节点是临时节点,该值是当前节点所有者的session id。如果节点不是临时节点,则值为零。
- dataLength:节点内数据的长度(节点值)
- numChildren:该节点的子节点个数
3.3.6.3 查询节点的详细信息2
- 查询含子节点的,可以直接ls ,如下:
ls -s /猩猩
3.3.7 创建持久序号节点
- 加选项
-s
,如下:create -s /bb/bb1
3.3.8 创建临时节点
- 什么是临时节点?
临时节点是在会话结束后,自动被删除的,通过这个特性,zk可以实现服务注册与发现的效果。 - 临时节点和普通节点的不同?临时节点如何维持心跳呢?
- 在Zookeeper中,临时节点和持久节点是两种不同的节点类型。
- 持久节点一旦创建,除非主动调用删除操作,否则会一直存储在Zookeeper上。
- 而临时节点是与客户端会话绑定的,一旦客户端会话失效,这个客户端所创建的所有临时节点都会被移除。
- 临时节点的特点是它们的生命周期与客户端会话相关,当客户端会话结束时,临时节点会被自动删除。而持久节点则会一直存在,直到被显式删除。
- 看下面结构图理解临时节点和持久节点:
- 创建临时节点的命令,如下:
create -e /cc # 临时节点 create -e -s /dd # 临时序号节点
3.4 权限设置——创建权限节点
3.4.1 步骤
- 首先,使用
addauth digest
命令给当前会话添加一个认证用户,如下:addauth digest maidou # 不带密码addauth digest beita:123456 # 带密码
3.4.2 解释
- 在ZooKeeper中,创建节点权限的命令可以使用以下命令:
其中,path是要创建的节点路径,data是节点的数据,acl是节点的权限设置。权限设置可以使用以下格式:create \[-s\] \[-e\] path data acl
其中,scheme是权限方案,id是授权的对象,permission是授予的权限。常用的权限包括:scheme:id:permission
- c:创建权限,可以在当前节点下创建子节点
- r:读权限,可以读取节点的内容及子节点
- w:写权限,可以向节点写入数据
- d:删除权限,可以删除节点的子节点
- a:管理权限,可以设置节点的权限
- 所以,创建节点权限的命令可以使用类似以下格式:
create /path data scheme:id:permission
4. zookeeper 内部的数据模型
4.1 数据结构模型图
- 如下:
- 解释
- zookeeper 中的数据是保存在节点上的,节点就是znode,多个znode之间构成一颗树的目录结构。zookeeper 的数据模型是什么样子的呢?它很像数据结构当中的树,也很像文件系统的目录。
- 树是由节点组成,zookeeper 的数据存储也同样是基于节点,这种节点叫做znode。但是不同于树的节点,znode的引用方式是路径引用,类似于文件路径,如下:
- 这样的层级结构,让每一个znode节点拥有唯一的路径,就像命名空间一样,对不同信息做出清晰的隔离。