02 - zookeeper启动/关闭脚本、选举机制以及客户端命令行操作

目录

1、启停脚本

1.1、启动脚本

1.2、关闭脚本

1.3、启动关闭一体化

2、选举机制

3、客户端命令行操作

3.1、命令行语法

 3.2、znode 节点数据信息

3.3、节点类型(持久/短暂/有序号/无序号)

3.4、监听器原理

3.5、节点删除与查看


1、启停脚本

1.1、启动脚本

#!/bin/sh
echo "start zkServer..."
for i in 01 02 03
do
  ssh eshop-cache$i "source /etc/profile;/usr/local/module/zookeeper-3.4.10/bin/zkServer.sh start"
done
echo "zookeeper集群启动完成"

1.2、关闭脚本

#!/bin/sh
echo "start zkServer..."
for i in 01 02 03
do
  ssh eshop-cache$i "source /etc/profile;/usr/local/module/zookeeper-3.4.10/bin/zkServer.sh stop"
done
echo "zookeeper集群关闭完成"

1.3、启动关闭一体化

#! /bin/bash
case $1 in
"start"){
	for i in hadoop102 hadoop103 hadoop104
	do
		ssh $i "/opt/module/zookeeper-3.4.10/bin/zkServer.sh start"
	done
	};;
"stop"){
	for i in hadoop102 hadoop103 hadoop104
	do
		ssh $i "/opt/module/zookeeper-3.4.10/bin/zkServer.sh stop"
	done
	};;
esac

2、选举机制

3、客户端命令行操作

3.1、命令行语法

 1)启动客户端

[kgf@hadoop102 zookeeper-3.5.7]$ bin/zkCli.sh -server hadoop102:2181

2)显示所有操作命令

[zk: hadoop102:2181(CONNECTED) 1] help

 3.2、znode 节点数据信息

1)查看当前znode中所包含的内容

[zk: hadoop102:2181(CONNECTED) 1] ls /
[zookeeper]
[zk: hadoop102:2181(CONNECTED) 2]

2)查看当前节点详细数据

[zk: hadoop102:2181(CONNECTED) 2] ls -s /
[zookeeper]cZxid = 0x0
ctime = Thu Jan 01 08:00:00 CST 1970
mZxid = 0x0
mtime = Thu Jan 01 08:00:00 CST 1970
pZxid = 0x0
cversion = -1
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 0
numChildren = 1

[zk: hadoop102:2181(CONNECTED) 3]

(1)czxid:创建节点的事务 zxid

        每次修改 ZooKeeper 状态都会产生一个 ZooKeeper 事务 ID。事务 ID 是 ZooKeeper 中所 有修改总的次序。每次修改都有唯一的 zxid,如果 zxid1 小于 zxid2,那么 zxid1 在 zxid2 之 前发生。

(2)ctime:znode 被创建的毫秒数(从 1970 年开始)

(3)mzxid:znode 最后更新的事务 zxid

(4)mtime:znode 最后修改的毫秒数(从 1970 年开始)

(5)pZxid:znode 最后更新的子节点 zxid

(6)cversion:znode 子节点变化号,znode 子节点修改次数

(7)dataversion:znode 数据变化号

(8)aclVersion:znode 访问控制列表的变化号

(9)ephemeralOwner:如果是临时节点,这个是 znode 拥有者的 session id。如果不是 临时节点则是 0。

(10)dataLength:znode 的数据长度

(11)numChildren:znode 子节点数量

3.3、节点类型(持久/短暂/有序号/无序号)

1)分别创建2个普通节点(永久节点 + 不带序号)

[zk: hadoop102:2181(CONNECTED) 3]  create /sanguo "diaochan"
Created /sanguo
[zk: hadoop102:2181(CONNECTED) 4] create /sanguo/shuguo "liubei"
Created /sanguo/shuguo
[zk: hadoop102:2181(CONNECTED) 5]

注意:创建节点时,要赋值

2)获得节点的值

[zk: hadoop102:2181(CONNECTED) 5] get -s /sanguo
diaochan
cZxid = 0x200000004
ctime = Sat Apr 27 19:32:16 CST 2024
mZxid = 0x200000004
mtime = Sat Apr 27 19:32:16 CST 2024
pZxid = 0x200000005
cversion = 1
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 8
numChildren = 1
[zk: hadoop102:2181(CONNECTED) 6]

[zk: hadoop102:2181(CONNECTED) 6] get -s /sanguo/shuguo
liubei
cZxid = 0x200000005
ctime = Sat Apr 27 19:32:46 CST 2024
mZxid = 0x200000005
mtime = Sat Apr 27 19:32:46 CST 2024
pZxid = 0x200000005
cversion = 0
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 6
numChildren = 0
[zk: hadoop102:2181(CONNECTED) 7]

3)创建带序号的节点(永久节点 + 带序号)

(1)先创建一个普通的根节点/sanguo/weiguo

[zk: hadoop102:2181(CONNECTED) 7] create /sanguo/weiguo "caocao"
Created /sanguo/weiguo
[zk: hadoop102:2181(CONNECTED) 8]

(2)创建带序号的节点

[zk: hadoop102:2181(CONNECTED) 8] create -s /sanguo/weiguo/zhangliao "zhangliao"
Created /sanguo/weiguo/zhangliao0000000000
[zk: hadoop102:2181(CONNECTED) 9] create -s /sanguo/weiguo/zhangliao "zhangliao"
Created /sanguo/weiguo/zhangliao0000000001
[zk: hadoop102:2181(CONNECTED) 10] create -s /sanguo/weiguo/xuchu "xuchu"
Created /sanguo/weiguo/xuchu0000000002
[zk: hadoop102:2181(CONNECTED) 11]

        如果原来没有序号节点,序号从 0 开始依次递增。如果原节点下已有 2 个节点,则再排 序时从 2 开始,以此类推。   

4)创建短暂节点(短暂节点 + 不带序号 or 带序号)

(1)创建短暂的不带序号的节点

[zk: hadoop102:2181(CONNECTED) 11] create -e /sanguo/wuguo "zhouyu"
Created /sanguo/wuguo
[zk: hadoop102:2181(CONNECTED) 12]

(2)创建短暂的带序号的节点

[zk: hadoop102:2181(CONNECTED) 12] create -e -s /sanguo/wuguo "zhouyu"
Created /sanguo/wuguo0000000003
[zk: hadoop102:2181(CONNECTED) 13]

(3)在当前客户端是能查看到的

[zk: hadoop102:2181(CONNECTED) 13] ls /sanguo
[shuguo, weiguo, wuguo, wuguo0000000003]
[zk: hadoop102:2181(CONNECTED) 14]

(4)退出当前客户端然后再重启客户端

[zk: localhost:2181(CONNECTED) 12] quit

[kgf@hadoop104 zookeeper-3.5.7]$ bin/zkCli.sh

(5)再次查看根目录下短暂节点已经删除

[zk: localhost:2181(CONNECTED) 0] ls /sanguo
[shuguo, weiguo]
[zk: localhost:2181(CONNECTED) 1]

5)修改节点数据值

[zk: localhost:2181(CONNECTED) 1] get -s /sanguo/weiguo
caocao
cZxid = 0x200000006
ctime = Sat Apr 27 19:35:31 CST 2024
mZxid = 0x200000006
mtime = Sat Apr 27 19:35:31 CST 2024
pZxid = 0x200000009
cversion = 3
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 6
numChildren = 3
[zk: localhost:2181(CONNECTED) 2] set /sanguo/weiguo "simayi"
[zk: localhost:2181(CONNECTED) 3] get -s /sanguo/weiguo
simayi
cZxid = 0x200000006
ctime = Sat Apr 27 19:35:31 CST 2024
mZxid = 0x200000010
mtime = Sat Apr 27 19:44:54 CST 2024
pZxid = 0x200000009
cversion = 3
dataVersion = 1
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 6
numChildren = 3
[zk: localhost:2181(CONNECTED) 4]

3.4、监听器原理

        客户端注册监听它关心的目录节点,当目录节点发生变化(数据改变、节点删除、子目 录节点增加删除)时,ZooKeeper 会通知客户端。监听机制保证 ZooKeeper 保存的任何的数 据的任何改变都能快速的响应到监听了该节点的应用程序。

1)节点的值变化监听

(1)在 hadoop104 主机上注册监听/sanguo 节点数据变化

[zk: localhost:2181(CONNECTED) 26] get -w /sanguo

(2)在 hadoop103 主机上修改/sanguo 节点的数据

[zk: localhost:2181(CONNECTED) 1] set /sanguo "xisi"

(3)观察 hadoop104 主机收到数据变化的监听

[zk: localhost:2181(CONNECTED) 0] get -w /sanguo
diaochan
[zk: localhost:2181(CONNECTED) 1]
WATCHER::

WatchedEvent state:SyncConnected type:NodeDataChanged path:/sanguo

注意:在hadoop103再多次修改/sanguo的值,hadoop104上不会再收到监听。因为注册 一次,只能监听一次。想再次监听,需要再次注册 

2)节点的子节点变化监听(路径变化)

(1)在 hadoop104 主机上注册监听/sanguo 节点的子节点变化

[zk: localhost:2181(CONNECTED) 1]  ls -w /sanguo
[shuguo, weiguo]
[zk: localhost:2181(CONNECTED) 2]

(2)在 hadoop103 主机/sanguo 节点上创建子节点

[zk: localhost:2181(CONNECTED) 1]  create /sanguo/jin "simayi"
Created /sanguo/jin
[zk: localhost:2181(CONNECTED) 2]

(3)观察 hadoop104 主机收到子节点变化的监听

[zk: localhost:2181(CONNECTED) 1]  ls -w /sanguo
[shuguo, weiguo]
[zk: localhost:2181(CONNECTED) 2]
WATCHER::

WatchedEvent state:SyncConnected type:NodeChildrenChanged path:/sanguo

注意:节点的路径变化,也是注册一次,生效一次。想多次生效,就需要多次注册。

3.5、节点删除与查看

1)删除节点

[zk: localhost:2181(CONNECTED) 2] delete /sanguo/jin
[zk: localhost:2181(CONNECTED) 3]

2)递归删除节点

[zk: localhost:2181(CONNECTED) 3] deleteall /sanguo/shuguo
[zk: localhost:2181(CONNECTED) 4]

3)查看节点状态

[zk: localhost:2181(CONNECTED) 4] stat /sanguo
cZxid = 0x200000004
ctime = Sat Apr 27 19:32:16 CST 2024
mZxid = 0x200000013
mtime = Sat Apr 27 19:56:06 CST 2024
pZxid = 0x200000016
cversion = 9
dataVersion = 1
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 4
numChildren = 1
[zk: localhost:2181(CONNECTED) 5]

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值