1 zk的安装: 2 1. 下载zk.tar.gz安装包,并解压至/usr/local/devInstall 3 2. 在zk的目录下新建文件夹data 4 3. 复制zk/config目录下的zoo_sample.cfg,重命名为zoo.cfg,vim zoo.cfg,将其中的dataDir=步骤2中data的目录;dataDir指定的路径用于存储zk中数据的内存快照,及事务文件。 5 启动zk: 6 1. 进入zk的bin目录 7 2. 启动zk:./zkServer.sh start 8 3. 查看状态:./zkServer.sh status 9 4. 停止zk: ./zkServer.sh stop 10 启动zk客户端: 11 1. 进入zk的bin目录 12 2. 启动:./zkCli.sh 13 3. 停止:quit 14 zk常用的shell命令: 15 -新增节点: 16 create [-s] [-e] path data #其中-s为有序节点,-e为临时节点;默认创建的节点都是持久化节点。 17 eg:创建持久化节点并写入数据: 18 [zk: localhost:2181(CONNECTED) 9] create /hadoop "123456" 19 Created /hadoop 20 创建持久化有序节点,此时创建的节点名为指定节点名+自增序号: 21 [zk: localhost:2181(CONNECTED) 10] create -s /a "aaa" 22 Created /a0000000007 23 创建临时节点,临时节点会在会话过期后被删除: 24 [zk: localhost:2181(CONNECTED) 11] create -e /tmp "tempo" 25 Created /tmp 26 创建临时有序节点,也会在会话过期后被删除: 27 [zk: localhost:2181(CONNECTED) 12] create -s -e /aa "aaa" 28 Created /aa0000000009 29 -更新节点:每次更新后dataVersion都会自增1 30 -更新节点的命令是set,可以直接进行修改,如下: 31 [zk: localhost:2181(CONNECTED) 14] set /hadoop "12345" 32 cZxid = 0x23 33 ctime = Wed Jul 15 13:28:02 CST 2020 34 mZxid = 0x27 35 mtime = Wed Jul 15 13:35:06 CST 2020 36 pZxid = 0x23 37 cversion = 0 38 dataVersion = 1 39 aclVersion = 0 40 ephemeralOwner = 0x0 41 dataLength = 5 42 numChildren = 0 43 -也可以基于版本号进行修改,此时类似于乐观锁机制,当你传入的数据版本号(dataVersion)和当前节点数据版本号不符合时,zk会拒绝本次修改: 44 [zk: localhost:2181(CONNECTED) 16] set /hadoop "12343" 1 45 version No is not valid : /hadoop 46 -删除节点: 47 删除节点的语法如下: 48 delete path [version] 49 和更新节点数据一样,也可以传入版本号。当传入的版本号和此节点的数据版本号不一致时,zk也不会执行删除操作。 50 要向删除某个节点及其所有后代节点,可以使用递归删除,命令为rmr path; 51 -查看节点: 52 查看节点的语法如下: 53 get path 54 -查看节点状态: 55 可以使用stat命令查看节点状态,它的返回值和get命令类似,但不会返回节点数据: 56 stat path 57 -查看节点列表: 58 查看节点列表有ls path 和 ls2 path两个命令,后者是前者的增强,不仅可以查看指定路径下所有节点,还可以查看当前节点的信息。 59 -监听器get path [watch] 60 使用get path [watch] 注册的监听器能够在节点内容发生改变的时候,向客户端发出通知。需要注意的是,zk的触发器是一次性的(one-time-trigger),即触发一次后就会立即失效。 61 eg: 62 get /hadoop watch 63 set /hadoop watch 45678 64 [zk: localhost:2181(CONNECTED) 1] set /hadoop "45678" 65 WATCHER:: 66 WatchedEvent state:SyncConnected type:NodeDataChanged path:/hadoop 67 -监听器stat path [watch] 68 使用stat path [watch] 注册的监听器能够在节点状态发生改变的时候,向客户端发出通知。 69 [zk: localhost:2181(CONNECTED) 2] stat /hadoop watch 70 [zk: localhost:2181(CONNECTED) 3] set /hadoop 12344 71 WATCHER:: 72 WatchedEvent state:SyncConnected type:NodeDataChanged path:/hadoop 73 -监听器ls\ls2 path [watch] 74 使用ls path [watch] 或 ls2 path [watch] 注册的监听器能够监听该节点下所有子节点的增加和删除操作。注意:只能捕获增加和删除,节点数据的修改不能捕获。