zhouying23 发表于 2015-9-6 13:44:12

ZooKeeper实践三:客户端脚本

  ZooKeeper是通过客户端脚本来操作的。客户端脚本:zkCli.sh,存放在ZooKeeper的bin目录下。
  默认连接本地的ZooKeeper服务器:


#zkCli.sh
  连接指定的ZooKeeper服务器:


#zkCli.sh –serverServer IP:port
  (注:Server IP代表服务器IP)
  1)    启动客户端脚本

本次环境: ZooKeeper 单机模式,并启动服务器


# zkCli.sh
Connecting to localhost:2181
…………………………..
2015-02-11 11:08:18,470 - INFO - Initiating client connection, connectString=localhost:2181 sessionTimeout=30000 watcher=org.apache.zookeeper.ZooKeeperMain$MyWatcher@1c507aaf
Welcome to ZooKeeper!   注1
2015-02-11 11:08:18,517 - INFO - Opening socket connection to server localhost/127.0.0.1:2181. Will not attempt to authenticate using SASL (unknown error)注2
2015-02-11 11:08:18,527 - INFO - Socket connection established to localhost/127.0.0.1:2181, initiating session
JLine support is enabled   注3
2015-02-11 11:08:18,550 - INFO - Session establishment complete on server localhost/127.0.0.1:2181, sessionid = 0x14b769a51fe0001, negotiated timeout = 30000注4
WATCHER::
WatchedEvent state:SyncConnected type:None path:null注5

  注1:客户端启动初始化连接

注2:客户端尝试连接到ZooKeeper服务器

注3:连接成功,服务器创建一个session

注4:session创建成功

注5:服务器向客户端返回一个SyncConnected事件
  其中注2中” Will not attempt to authenticate using SASL (unknown error)”,网上说是解析不对,但是在hosts文件中添加解析后依然如此,看ZooKeeper书籍中也是如此:


暂时无法知晓原因,以及是否会产生影响。
  2)    可输入help查看命令帮助


help
ZooKeeper -server host:port cmd args
connect host:port
get path
ls path
set path data
rmr path
delquota [-n|-b] path
quit
printwatches on|off
create [-s] [-e] path data acl
stat path
close
ls2 path
history
listquota path
setAcl path acl
getAcl path
sync path
redo cmdno
addauth scheme auth
delete path
setquota -n|-b val path
  常用命令演示

1)    ls

使用ls命令,可以列出ZooKeeper指定节点下的所有的子节点,不过只能看到指定节点下第一级所有子节点。用法如下:

ls path
  其中,path表示的是指定数据节点的节点路径

执行如下命令:


ls /

  第一次部署的ZooKeeper,默认在根节点”/”下面有一个叫做的保留节点
  2)    create

使用create命令,可以创建一个ZooKeeper节点。用法如下:


create [-s] [-e] path data acl
  其中:-s或-e分别指定节点特性:顺序或临时节点。默认情况下,即不添加-s或-e参数的,创建的是持久节点。data代表节点的数据内容。acl是进行权限控制,缺省情况下,不做任何权限控制。

执行如下命令创建一个新节点:


create /example "演示创建节点命令"
Created /example
  3)    get

使用get命令,可以获取ZooKeeper指定节点的数据内容和属性信息。用法如下:


get path
  执行如下命令:


get /example
"演示创建节点命令"
cZxid = 0x4
ctime = Wed Feb 11 15:33:19 CST 2015
mZxid = 0x4
mtime = Wed Feb 11 15:33:19 CST 2015
pZxid = 0x4
cversion = 0
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 26
numChildren = 0
  4)    set

使用set命令,可以更新指定节点的数据内容。用法如下:


set path data
  其中,data就是要更新的数据新内容。version参数用于指定本次更新操作是基于ZNode的哪一个数据版本进行的。ZooKeeper中,节点的数据是有版本概念的。

执行如下命令:


set /example "演示更新数据内容命令"
cZxid = 0x4
ctime = Wed Feb 11 15:33:19 CST 2015
mZxid = 0x7
mtime = Wed Feb 11 15:43:33 CST 2015
pZxid = 0x4
cversion = 0
dataVersion = 1
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 32
numChildren = 0
  使用get命令查看:


get /example
"演示更新数据内容命令"
cZxid = 0x4
ctime = Wed Feb 11 15:33:19 CST 2015
mZxid = 0x7
mtime = Wed Feb 11 15:43:33 CST 2015
pZxid = 0x4
cversion = 0
dataVersion = 1
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 32
numChildren = 0
  使用set命令时带上版本参数:


set /example "演示带版本参数更新" 1
cZxid = 0x4
ctime = Wed Feb 11 15:33:19 CST 2015
mZxid = 0xb
mtime = Wed Feb 11 15:46:33 CST 2015
pZxid = 0x4
cversion = 0
dataVersion = 2
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 29
numChildren = 0
  使用get命令查看:


get/example
"演示带版本参数更新"
cZxid = 0x4
ctime = Wed Feb 11 15:33:19 CST 2015
mZxid = 0xb
mtime = Wed Feb 11 15:46:33 CST 2015
pZxid = 0x4
cversion = 0
dataVersion = 2
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 29
numChildren = 0
  可以看到mtime, dataVersion, dataLength会随之变化。
  5)    delete

使用delete命令,可以删除ZooKeeper上的指定节点。用法如下:


delete path
  其中,version参数和set命令中version参数的作用是一致的。

执行如下命令:


delete /example
ls /


  需要注意:被删除的节点,该节点必须没有子节点存在,否则会出现出错信息:


Node not empty: /example
  执行如下命令:


create /example/test "演示非空删除"
Created /example/test
ls /

ls /example


delete /example
Node not empty: /example
页: [1]
查看完整版本: ZooKeeper实践三:客户端脚本