zkCli使用手册

zkClient命令笔记




connect host:port 连接到其他的zk服务器,例:connect 192.168.174.222:2181
-------------------------------------------------------------------------------------------------------
get path [watch] 获取某个节点的数据,如果加上watch参数,那么当这个节点内的数据发生变化的时候就会收到通知
例:直接获取
[zk: localhost:2181(CONNECTED) 2] get /mpcapp/mpc3
789
cZxid = 0x4a00000057//创建时候的id
ctime = Wed Nov 30 15:32:16 CST 2016//创建时间
mZxid = 0x4a00000057//修改时候的id
mtime = Wed Nov 30 15:32:16 CST 2016//修改时间
pZxid = 0x4a00000057//持久化version
cversion = 0//创建时候的version
dataVersion = 0//修改后的version,每次修改这个version都会改变,刚创建的时候和cversion一样
aclVersion = 0//###########################################
ephemeralOwner = 0x0//是否是永久的(有永久节点和临时节点之分)
dataLength = 3//数据的长度
numChildren = 0//子节点数量
例:获取的时候带上watch参数,这时候改变参数的内容(通过另外一个客户端)
[zk: localhost:2181(CONNECTED) 4] get /mpcapp/mpc3 watch
789
cZxid = 0x4a00000057
ctime = Wed Nov 30 15:32:16 CST 2016
mZxid = 0x4a00000057
mtime = Wed Nov 30 15:32:16 CST 2016
pZxid = 0x4a00000057
cversion = 0
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 3
numChildren = 0
如上,首先返回了数据,这时候在另一个客户端改变内容
WATCHER::


WatchedEvent state:SyncConnected type:NodeDataChanged path:/mpcapp/mpc3
打印出了内容改变的事件,这就是zookeeper给我们提供的监听功能了。
---------------------------------------------------------------------------------------------------------------------------------------


ls path [watch] 列出某个节点的子节点,如果加上watch,那么监听该节点的子节点的变化,比如多一个子节点,少了一个子节点的事件都会被监听到
例:直接列出某个节点的子节点
[zk: localhost:2181(CONNECTED) 5] ls /mpcapp
[mpc3]
例:加上watch参数
[zk: localhost:2181(CONNECTED) 6] ls /mpcapp watch
[mpc3]
然后给目录下面增加一个节点
[zk: localhost:2181(CONNECTED) 7] 
WATCHER::


WatchedEvent state:SyncConnected type:NodeChildrenChanged path:/mpcapp
打印出了子节点改变事件。 需要注意的是,在get和ls中使用watch的话永远只注册一次监听,也就是说内容改变一次后或者子节点改变一次后监听到了事件,在发生改变的话就不能监听到事件了
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
set path data [version] 修改某个节点的数据,这个version参数是指你要修改的节点的数据的当前的version也就是dataVersion,如果两个version不一致会报错
例:[zk: localhost:2181(CONNECTED) 1] set /mpcapp/mpc2 aaa
cZxid = 0x4a0000005e
ctime = Wed Nov 30 16:06:07 CST 2016
mZxid = 0x4a00000064
mtime = Wed Nov 30 16:11:54 CST 2016
pZxid = 0x4a0000005e
cversion = 0
dataVersion = 1
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 3
numChildren = 0
例:加上version
[zk: localhost:2181(CONNECTED) 4] set /mpcapp/mpc2 aaa 1
cZxid = 0x4a0000005e
ctime = Wed Nov 30 16:06:07 CST 2016
mZxid = 0x4a00000067
mtime = Wed Nov 30 16:14:07 CST 2016
pZxid = 0x4a0000005e
cversion = 0
dataVersion = 2
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 3
刚才修改过一次,数据的dataVersion是1,所以在调用命令的时候也用1
-----------------------------------------------------------------------
rmr path 删除某个节点,并删除该节点下的所有子节点
-------------------------------------------------------------------------------------
setquota -n|-b val path 为某个节点设置配额(所谓的配额是指该节点的最大子节点数n,或者该节点的最大数据值的长度v) val就是要设置的配额的值
例:设置子节点最大数
[zk: localhost:2181(CONNECTED) 6] setquota -n 2 /mpcapp
Comment: the parts are option -n val 2 path /mpcapp
例:设置数据最大长度
[zk: localhost:2181(CONNECTED) 20] setquota -b 100 /mpcapp     
Comment: the parts are option -b val 100 path /mpcapp
#这里遇到的问题是,一个节点只能设置n或者b不能同时设置n和b;设置了n的话b为-1,设置了b的话n为-1;待查明原因
#这里设置了最大值以后,设置超过最大值的子节点数量或者数据长度也能够添加成功,但是会在但是会在${dataDir}/zookeeper.out中记录警告信息


---------------------------------------------------------------------------------
listquota path 列出指定节点的最大值限制
例:[zk: localhost:2181(CONNECTED) 23] listquota /mpcapp           
absolute path is /zookeeper/quota/mpcapp/zookeeper_limits
Output quota for /mpcapp count=-1,bytes=100
Output stat for /mpcapp count=3,bytes=9
-------------------------------------------------------------------------------------


delquota [-n|-b] path 删除指定节点的子节点最大值或者数据长度最大值
--------------------------------------------------------------------------------------------
quit 退出
-----------------------------------------------------------------------------
printwatches on|off 这个命令执行不了,不知道为什么
------------------------------------------------------------------------------------------
create [-s] [-e] path data acl 创建一个节点,带-s那么这是一个临时节点,在断开连接后就销毁,-e就会给创建的节点上面加上序列号(每个目录有自己独立的序列号) path是节点的路径 data是节点的值
acl是节点的权限控制


权限主要有:
CREATE : 创建子节点
READ : 获取节点数据和子节点列表
WRITE : 更新节点数据
DELETE : 删除子节点
ADMIN : 设置节点ACL的权限


与授权相关的几个概念:
shchema:权限模式,有IP和digest两种
ID:授权对象 
schema为IP时,该值为具体的IP地址
scheme为digest时,该值为 userName:base64(sha1(userName:password))
zookeeper的javaAPI提供了一个工具类org.apache.zookeeper.server.auth.DigestAuthenticationProvider 可以快速生成加密的密文
permission:权限,指的就是上面所说的五种权限
最终的组合为: schema + ID + permission


例:创建节点
[zk: localhost:2181(CONNECTED) 31] create /mpcapp/mpc4 123
Created /mpcapp/mpc4
这个节点是永久的,断开连接也不会删除
例:创建临时节点//临时节点是不能有子节点的
[zk: localhost:2181(CONNECTED) 32] create -e /mpcapp/mpc5 555555
Created /mpcapp/mpc5
例:创建序号节点
[zk: localhost:2181(CONNECTED) 33] create -s /mpcapp/mpc6 55555544
Created /mpcapp/mpc60000000006
[zk: localhost:2181(CONNECTED) 34] create -s /mpcapp/mpc7 55555544
Created /mpcapp/mpc70000000007
[zk: localhost:2181(CONNECTED) 35] 
例:创建带有权限的节点
[zk: localhost:2181(CONNECTED) 35] create /mpcapp/mpc8  88888 ip:192.168.174.139:crwda
Created /mpcapp/mpc8


[zk: localhost:2181(CONNECTED) 37] create /mpcapp/mpc9 99999 digest:hylexus:f4Myrgy6YlaWdo4lvv///2jgEDI=:crwad   
Created /mpcapp/mpc9
----------------------------------------------------------------------------------------------------------------------------------


stat path [watch] 查看某个节点的状态信息 加上watch参数后就会监听状态改变
例:
[zk: localhost:2181(CONNECTED) 38] stat /mpcapp
cZxid = 0x4a00000054
ctime = Wed Nov 30 15:31:01 CST 2016
mZxid = 0x4a00000054
mtime = Wed Nov 30 15:31:01 CST 2016
pZxid = 0x4a0000007d
cversion = 12
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 3
numChildren = 8


--------------------------------------------------------------------------------------
close 关闭连接,一般退出的时候先关闭连接,然后quit


----------------------------------------------------------------------------------------


ls2 path [watch] 和ls用法功能一样,唯一的区别就是列出子节点的同时列出了该节点的状态信息


----------------------------------------------------------------------------------------------


history 列出命令历史
----------------------------------------------------------------------------------------------------------
redo cmdno 该命令可以重新执行指定命令编号的历史命令,命令编号可以通过history查看
----------------------------------------------------------------------------------------
getAcl path 获取某个节点的授权信息
例:
[zk: mpc6:2181(CONNECTED) 48] getAcl /mpcapp/mpc8
'ip,'192.168.174.139
: cdrwa


[zk: mpc6:2181(CONNECTED) 49] getAcl /mpcapp/mpc9
'digest,'hylexus:f4Myrgy6YlaWdo4lvv///2jgEDI=
: cdrwa


----------------------------------------------------------
setAcl path acl 设置某个节点的授权信息
例:
[zk: localhost:2181(CONNECTED) 0] setAcl /mpcapp/mpc2 digest:hylexus:f4Myrgy6YlaWdo4lvv///2jgEDI=:crwad 
cZxid = 0x4a0000005e
ctime = Wed Nov 30 16:06:07 CST 2016
mZxid = 0x4a00000068
mtime = Wed Nov 30 16:14:17 CST 2016
pZxid = 0x4a0000005e
cversion = 0
dataVersion = 3
aclVersion = 1
ephemeralOwner = 0x0
dataLength = 3
-------------------------------------------------------------------------------------------
delete path [version] 删除一个节点,该节点下不能有子节点;version的就是指定dataVersion不一致不能删除


-----------------------------------------------------------------------------------------------------------------


addauth scheme auth 
    schema:可取ip或digest
    auth
        schema==digest时为 userName:password
        schema==ip时为
------------------------------------------------------------------------------
sync path 立刻在服务器之间同步信息(个人理解是这样的,还没有确定)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/569246.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

浏览器解析JavaScript的原理

JavaScript的特点一般都知道的就是解释执行,逐行执行,就是从上到下依次执行。 JavaScript的执行之前,其实还是有一些操作的,只是没有表现出来 JavaScript的执行过程: 1、语法检测  首先是大致查看有没有基本的语法错…

实现 tomcat 热加载证书

原文地址&#xff1a;https://my.oschina.net/u/157514/blog/395238 之前一篇中说了如何 建立 https 通信的完整流程&#xff0c;其中涉及了java web容器 tomcat&#xff0c;关于它的配置是&#xff1a; <Connector port"8443" protocol"org.apache.coyote.…

修改yapf中的列宽限制值

yapf是一款由Google开源的Python代码自动格式化工具&#xff0c;它根据PEP 8规范可以帮我们自动格式化我们的代码&#xff0c;让代码更规范、更漂亮。但是其中最大列宽被限制为80&#xff0c;如果超过80&#xff0c;在格式化时就会被yapf换行&#xff0c;随着现在人们的显示器越…

Hadoop64位版本安装后遇到的警告处理

在使用hadoop的过程中&#xff0c;会遇到一个警告&#xff0c;内容如下&#xff1a; WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable 对于这个问题网上很多说法是由于系统位数和所下载…

【转】C++类的sizeof大小

转自https://blog.csdn.net/zhengjihao/article/details/77825269 其中有的描述与实际GCC上执行的结果不符&#xff0c;不过其中的分析思路需要掌握。 以下是GCC的实际执行结果&#xff1a; 1 #include <iostream>2 using namespace std;3 4 int *pointer;5 6 class Null…

shiro扩展获得用户登录类型并提供cookie的方式记住用户密码

在最近的项目中要实现一个需求&#xff1a;“同时让两种类型的用户进行登录&#xff0c;登录后如果用户勾选了记住密码就要生成cookie来记录用户的密码和用户名”。本人做安全认证的时候一直在使用shiro&#xff0c;所以就想到在shiro的基础上进行一些扩展来满足需求。 shiro自…

ueditor跨域上传图片文件(基于jsp框架、tomcat)

额&#xff0c;好久没有用到ueditor了&#xff0c;因为现在的相关工作很少涉及到富文本编辑&#xff1b;最近临时带了一个项目&#xff0c;里面要用到富文本编辑器&#xff0c;而且文件要统一上传到文件服务器上保存&#xff1b;应为以前用过ueditor就试着在网上着一些跨域保存…

JavaWeb-RESTful_用SpringMVC开发RESTful

RESTful简介 一种软件架构风格、设计风格&#xff0c;而不是标准&#xff0c;只是提供了一组设计原则和约束条件。 它主要用于客户端和服务器交互类的软件。 基于这个风格设计的软件可以更简洁&#xff0c;更有层次&#xff0c;更易于实现缓存等机制。 RESTful可以理解为一种编…

在storm中使用流

storm是一个强大的流式计算框架&#xff0c;单流的storm在使用中非常普遍&#xff0c;而同时storm也提供对多个流的支持&#xff1b;通过定义多个流&#xff0c;用户可以进一步的把数据发放到不同的流中进行处理。 代码如下&#xff1a; 一、 定义多个流的spout public class…

精选Pycharm里6大神器插件

http://www.sohu.com/a/306693644_752099 上次写了一篇关于Sublime的精品插件推荐&#xff0c;有小伙伴提议再来一篇Pycharm的主题。相比Sublime&#xff0c;Pycharm要强大许多&#xff0c;而且是专为python设计的集成开发环境&#xff0c;所以无论是自身功能、环境配置还是使用…

在storm中使用定时保存

在storm中使用实时保存会对性能带来很大的考验&#xff0c;所以在很多场景中还是使用定时保存&#xff1b;而且storm自带了定时功能&#xff0c;使用方式如下&#xff1a; 首先在topo中的config中定义一个通信时间&#xff0c;定义方式如下&#xff1a; conf.put(Config.TOPOLO…

数字信号处理实验(一)——DTFT

一、离散序列傅里叶变化——DTFT 1、DTFT公式 2、Matlab算法实现 function[X]dtft(x,n,w,flag)%计算离散时间付里叶变换 %[X]dtft(x,n,w) %X在w频率点上的DTFT数组 %xn点有限长度序列 %n样本位置向量 %w频率点位置向量X x * (exp(-j).^(n * w));3、DTFT一些画图代码 function …

修改hadoop中yarn的webui中显示的任务时间为中国时间

在${HADOOP_HOME}\share\hadoop\yarn目录下找到hadoop-yarn-common-x.x.x.jar&#xff0c;然后用winRAR打开&#xff1b; 打开以后结构如下&#xff1a; 进入webapps/static/目录&#xff0c;然后修改yarn.dt.plugins.js&#xff1b;做出如下修改&#xff1a; &#xff08;1&a…

一条语句复制整个目录《转》

使用的是 Delphi 2010 下 IOUtils 单元的 TDirectory.Copy 函数: 1 uses IOUtils; 2 3 procedure TForm1.Button1Click(Sender: TObject); 4 const 5 SourceDir C:\Temp\Folder1; { 源文件夹必须存在 } 6 DestDir C:\Temp\Folder2; { 如果目标文件夹不存在, 程序会自动…

设计模式与重构汇总

面向对象的基本原则&#xff1a;单一原则&#xff1a;引起一个类发生变化的原因只有一个 开放封闭原则&#xff1a;对于类的修改是封闭的&#xff0c;而对于类的扩展是开放的 依赖倒置原则&#xff1a;高层不依赖于底层&#xff0c;都应该依赖与抽象&#xff1b;抽象不依赖于…

转 最小凸包算法(Convex Hull)(1)-Graham扫描法 -计算几何-算法导论

原文地址&#xff1a;http://blog.csdn.net/suwei19870312/article/details/542281 基本问题&#xff1a; 平面上有n个点p1,p2, ..., pn, 要求求出一个面积最小的凸多边形&#xff0c;使得这个多边形包含所有平面上的点。 根据算法导论上提供的两个方法做一些介绍&#xff1a; …

Trident API 概览

Trident API 概览 在网上看到了很多有TRIDENT相关API的翻译&#xff0c;看来看去&#xff0c;总觉得没有说清楚很多东西&#xff0c;所以自己结合使用的经验翻译了一篇出来&#xff1b;翻译完以后&#xff0c;也发现 在自己的翻译中也有很多地方是表达不清楚的不过多少感觉有些…

poj 2406 还是KMP的简单应用

记住KMP是多计算一位的。其中next[i]为不为自身的最大首尾重复子串长度。 位移ji-next[i]可以看作是构成字符串s的字串&#xff08;如果i%j0&#xff0c;存在这样的构成&#xff09;&#xff0c;相应的重复次数也就是n/d。 a b c d * next:-1 0 0 0 0 这时ji-next[i]; …

Trident State译文

Trident State 译文 Trident针对状态化的数据源的读写进行了一流的分装。State可以包含在拓扑中-例如&#xff0c;保存在内存中&#xff0c;有HDFS提供备份-也可以保存在一个外部的数据库中&#xff0c;像Memcached和Cassandra。针对以上的所有情况&#xff0c;Trident的API都…

远程访问数据库查询数据量一大就Hang

最近刚为客户升级了一套Oracle Database&#xff0c;一切进展顺利&#xff0c;眼看就要顺利验收时&#xff0c;发现有部分客户端软件连接新版本数据库时会Hang&#xff0c;问题非常诡异。 系统环境如下 升级前的环境OS:Windows Server 2003 DB:Windows Database Enterprise Edi…