【zookeeper】zookeeper的shell操作

这篇具有很好参考价值的文章主要介绍了【zookeeper】zookeeper的shell操作。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Zookeeper的shell操作

本章节将分享一些zookeeper客服端的一些命令,实验操作有助于理解zookeeper的数据结构。

Zookeeper命令工具

在前一章的基础上,在启动Zookeeper服务之后,输入以下命令,连接到Zookeeper服务。连接成功之后,系统会输出Zookeeper的相关环境及配置信息,并在屏幕输出“welcome to Zookeeper!”等信息,倒数几行的位置,如下:

[root@k8s-m1 bin]# zkCli.sh -server k8s-m1:2181
Connecting to k8s-m1:2181
2023-08-31 16:36:48,125 [myid:] - INFO  [main:Environment@100] - Client environment:zookeeper.version=3.4.12-e5259e437540f349646870ea94dc2658c4e44b3b, built on 03/27/2018 03:55 GMT
2023-08-31 16:36:48,129 [myid:] - INFO  [main:Environment@100] - Client environment:host.name=k8s-m1
2023-08-31 16:36:48,130 [myid:] - INFO  [main:Environment@100] - Client environment:java.version=1.8.0_65
2023-08-31 16:36:48,132 [myid:] - INFO  [main:Environment@100] - Client environment:java.vendor=Oracle Corporation
2023-08-31 16:36:48,133 [myid:] - INFO  [main:Environment@100] - Client environment:java.home=/opt/jdk1.8.0_65/jre
2023-08-31 16:36:48,133 [myid:] - INFO  [main:Environment@100] - Client environment:java.class.path=/opt/zookeeper-3.4.12/bin/../build/classes:/opt/zookeeper-3.4.12/bin/../build/lib/*.jar:/opt/zookeeper-3.4.12/bin/../lib/slf4j-log4j12-1.7.25.jar:/opt/zookeeper-3.4.12/bin/../lib/slf4j-api-1.7.25.jar:/opt/zookeeper-3.4.12/bin/../lib/netty-3.10.6.Final.jar:/opt/zookeeper-3.4.12/bin/../lib/log4j-1.2.17.jar:/opt/zookeeper-3.4.12/bin/../lib/jline-0.9.94.jar:/opt/zookeeper-3.4.12/bin/../lib/audience-annotations-0.5.0.jar:/opt/zookeeper-3.4.12/bin/../zookeeper-3.4.12.jar:/opt/zookeeper-3.4.12/bin/../src/java/lib/*.jar:/opt/zookeeper-3.4.12/bin/../conf:.:/opt/jdk1.8.0_65/lib/dt.jar:/opt/jdk1.8.0_65/lib/tools.jar
2023-08-31 16:36:48,133 [myid:] - INFO  [main:Environment@100] - Client environment:java.library.path=/usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib
2023-08-31 16:36:48,133 [myid:] - INFO  [main:Environment@100] - Client environment:java.io.tmpdir=/tmp
2023-08-31 16:36:48,133 [myid:] - INFO  [main:Environment@100] - Client environment:java.compiler=<NA>
2023-08-31 16:36:48,133 [myid:] - INFO  [main:Environment@100] - Client environment:os.name=Linux
2023-08-31 16:36:48,133 [myid:] - INFO  [main:Environment@100] - Client environment:os.arch=amd64
2023-08-31 16:36:48,133 [myid:] - INFO  [main:Environment@100] - Client environment:os.version=3.10.0-957.el7.x86_64
2023-08-31 16:36:48,133 [myid:] - INFO  [main:Environment@100] - Client environment:user.name=root
2023-08-31 16:36:48,133 [myid:] - INFO  [main:Environment@100] - Client environment:user.home=/root
2023-08-31 16:36:48,134 [myid:] - INFO  [main:Environment@100] - Client environment:user.dir=/opt/apache-zookeeper-3.7.1-bin/bin
2023-08-31 16:36:48,135 [myid:] - INFO  [main:ZooKeeper@441] - Initiating client connection, connectString=k8s-m1:2181 sessionTimeout=30000 watcher=org.apache.zookeeper.ZooKeeperMain$MyWatcher@5c29bfd
Welcome to ZooKeeper!
2023-08-31 16:36:48,166 [myid:] - INFO  [main-SendThread(k8s-m1:2181):ClientCnxn$SendThread@1028] - Opening socket connection to server k8s-m1/192.168.2.140:2181. Will not attempt to authenticate using SASL (unknown error)
JLine support is enabled
2023-08-31 16:36:48,241 [myid:] - INFO  [main-SendThread(k8s-m1:2181):ClientCnxn$SendThread@878] - Socket connection established to k8s-m1/192.168.2.140:2181, initiating session
[zk: k8s-m1:2181(CONNECTING) 0] 2023-08-31 16:36:48,314 [myid:] - INFO  [main-SendThread(k8s-m1:2181):ClientCnxn$SendThread@1302] - Session establishment complete on server k8s-m1/192.168.2.140:2181, sessionid = 0x1002552fac20000, negotiated timeout = 30000

WATCHER::

WatchedEvent state:SyncConnected type:None path:null

[zk: k8s-m1:2181(CONNECTED) 0]

输入help之后,屏幕会输出可用的Zookeeper命令,如下所示

[zk: k8s-m1:2181(CONNECTED) 0] 
[zk: k8s-m1:2181(CONNECTED) 0] help
ZooKeeper -server host:port cmd args
        stat path [watch]
        set path data [version]
        ls path [watch]
        delquota [-n|-b] path
        ls2 path [watch]
        setAcl path acl
        setquota -n|-b val path
        history 
        redo cmdno
        printwatches on|off
        delete path [version]
        sync path
        listquota path
        rmr path
        get path [watch]
        create [-s] [-e] path data acl
        addauth scheme auth
        quit 
        getAcl path
        close 
        connect host:port        

使用Zookeeper命令的简单操作

(1)使用ls命令查看当前Zookeeper中所包含的内容:ls /

[zk: k8s-m1:2181(CONNECTED) 1] ls /
[zookeeper]

(2)创建一个新的Znode节点"aa",以及和它相关字符,执行命令:create /aa “first zookeeper”,默认是不带编号的

[zk: k8s-m1:2181(CONNECTED) 2] create /aa "first zookeeper"
Created /aa

创建带编号的持久性节点"bb",

[zk: k8s-m1:2181(CONNECTED) 3] create -s /bb "bb"
Created /bb0000000006

创建不带编号的临时节点"cc"

[zk: k8s-m1:2181(CONNECTED) 4] create -e /cc "cc"
Created /cc

创建带编号的临时节点"dd"

[zk: k8s-m1:2181(CONNECTED) 5] create -s -e /dd "dd"
Created /dd0000000008

(3) 再次使用ls命令来查看现在Zookeeper的中所包含的内容:ls /

[zk: k8s-m1:2181(CONNECTED) 6] ls /                 
[aa, bb0000000006, cc, dd0000000008, zookeeper]

此时看到,上面的四个节点aa/bb/cc/dd都已经被创建。

关闭本次连接回话session,并直接使用connect重新打开一个连接。
[zk: k8s-m1:2181(CONNECTED) 7] close
2023-08-31 20:17:54,078 [myid:] - INFO  [main:ZooKeeper@687] - Session: 0x1002552fac20002 closed
[zk: k8s-m1:2181(CLOSED) 8] 2023-08-31 20:17:54,084 [myid:] - INFO  [main-EventThread:ClientCnxn$EventThread@521] - EventThread shut down for session: 0x1002552fac20002

[zk: k8s-m1:2181(CLOSED) 8] ls /
Not connected
[zk: k8s-m1:2181(CLOSED) 9] connect  k8s-m1:2181 
2023-08-31 20:18:22,837 [myid:] - INFO  [main:ZooKeeper@441] - Initiating client connection, connectString=k8s-m1:2181 sessionTimeout=30000 watcher=org.apache.zookeeper.ZooKeeperMain$MyWatcher@5680a178
[zk: k8s-m1:2181(CONNECTING) 10] 2023-08-31 20:18:22,841 [myid:] - INFO  [main-SendThread(k8s-m1:2181):ClientCnxn$SendThread@1028] - Opening socket connection to server k8s-m1/192.168.2.140:2181. Will not attempt to authenticate using SASL (unknown error)
2023-08-31 20:18:22,842 [myid:] - INFO  [main-SendThread(k8s-m1:2181):ClientCnxn$SendThread@878] - Socket connection established to k8s-m1/192.168.2.140:2181, initiating session
2023-08-31 20:18:22,863 [myid:] - INFO  [main-SendThread(k8s-m1:2181):ClientCnxn$SendThread@1302] - Session establishment complete on server k8s-m1/192.168.2.140:2181, sessionid = 0x1002552fac20003, negotiated timeout = 30000

WATCHER::

WatchedEvent state:SyncConnected type:None path:null

重新查看,临时节点已经随着上一次的会话关闭自动删除了

[zk: k8s-m1:2181(CONNECTED) 10] ls  /
[aa, bb0000000006, zookeeper]
[zk: k8s-m1:2181(CONNECTED) 11] 

(4)使用get命令来确认第二步中所创建的Znode是否包含我们创建的字符串,执行命令:get /aa

[zk: k8s-m1:2181(CONNECTED) 11]  get /aa
first zookeeper
cZxid = 0x20000000e
ctime = Thu Aug 31 19:53:59 CST 2023
mZxid = 0x20000000e
mtime = Thu Aug 31 19:53:59 CST 2023
pZxid = 0x20000000e
cversion = 0
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 15
numChildren = 0
[zk: k8s-m1:2181(CONNECTED) 12] 

(5)接下来通过set命令来对zk所关联的字符串进行设置,执行命令:set /aa haha123

[zk: k8s-m1:2181(CONNECTED) 12] set /aa hello  
cZxid = 0x20000000e
ctime = Thu Aug 31 19:53:59 CST 2023
mZxid = 0x200000014
mtime = Thu Aug 31 20:20:39 CST 2023
pZxid = 0x20000000e
cversion = 0
dataVersion = 1
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 5
numChildren = 0
[zk: k8s-m1:2181(CONNECTED) 13]

(6)再次使用get命令来查看,上次修改的内容,执行命令:get /aa

[zk: k8s-m1:2181(CONNECTED) 13]  get /aa     
hello
cZxid = 0x20000000e
ctime = Thu Aug 31 19:53:59 CST 2023
mZxid = 0x200000014
mtime = Thu Aug 31 20:20:39 CST 2023
pZxid = 0x20000000e
cversion = 0
dataVersion = 1
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 5
numChildren = 0

(7)下面我们将刚才创建的Znode删除,执行命令:delete /aa

[zk: k8s-m1:2181(CONNECTED) 14] delete /aa

(8) 最后再次使用ls命令查看Zookeeper中的内容,执行命令:ls /

[zk: k8s-m1:2181(CONNECTED) 15] ls  /        
[bb0000000006, zookeeper]

经过验证,zk节点aa已经删除。
(9) 退出,执行命令:quit

[zk: k8s-m1:2181(CONNECTED) 17] quit 
Quitting...
2023-08-31 20:22:07,820 [myid:] - INFO  [main:ZooKeeper@687] - Session: 0x1002552fac20003 closed
2023-08-31 20:22:07,820 [myid:] - INFO  [main-EventThread:ClientCnxn$EventThread@521] - EventThread shut down for session: 0x1002552fac20003
[root@k8s-m1 bin]# 

查看状态信息

查看一个文件的状态信息

[zk: k8s-m1:2181(CONNECTED) 0] ls /
[bb0000000006, zookeeper]
[zk: k8s-m1:2181(CONNECTED) 1] stat /bb
Node does not exist: /bb
[zk: k8s-m1:2181(CONNECTED) 2] stat /bb0000000006
cZxid = 0x20000000f
ctime = Thu Aug 31 19:56:17 CST 2023
mZxid = 0x20000000f
mtime = Thu Aug 31 19:56:17 CST 2023
pZxid = 0x20000000f
cversion = 0
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 2
numChildren = 0

详细解释:

zxid: 一个事务编号,zookeeper集群内部的所有事务,都有一个全局的唯一的顺序的编号。
  它由两部分组成: 就是一个 64位的长整型 long
  高32位: 用来标识leader关系是否改变,如 0x2  
  低32位: 用来做当前这个leader领导期间的全局的递增的事务编号,如上面的0000000f

状态属性 说明
cZxid 数据节点创建时的事务ID
ctime 数据节点创建时的时间
mZxid 数据节点最后一次更新时的事务ID
mtime 数据节点最后一次更新时的时间
pZxid 数据节点的子节点列表最后一次被修改(是子节点列表变更,而不是子节点内容变更)时的事务ID
cversion 子节点的版本号
dataVersion 数据节点的版本号
aclVersion 数据节点的ACL版本号
ephemeralOwner 如果节点是临时节点,则表示创建该节点的会话的SessionID;如果节点是持久节点,则该属性值为0
dataLength 数据内容的长度
numChildren 数据节点当前的子节点个数

(1)修改节点a的数据,mZxid、dataVersion、dataLength 存储信息发生变化

[zk: k8s-m1:2181(CONNECTED) 10] ls /
[bb0000000006, zookeeper]
[zk: k8s-m1:2181(CONNECTED) 12] create /aa "first zookeeper"
Created /aa
[zk: k8s-m1:2181(CONNECTED) 13] ls    /
[bb0000000006, aa, zookeeper]
[zk: k8s-m1:2181(CONNECTED) 14] set /aa 'aa'
cZxid = 0x200000019
ctime = Thu Aug 31 20:27:57 CST 2023
mZxid = 0x20000001a
mtime = Thu Aug 31 20:28:32 CST 2023
pZxid = 0x200000019
cversion = 0
dataVersion = 1
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 2
numChildren = 0
[zk: k8s-m1:2181(CONNECTED) 16] 

(2)创建新的节点bb,状态信息都会发生变化,zxid的事物ID也会增加

[zk: k8s-m1:2181(CONNECTED) 18] create /bb "second zookeeper"
Created /bb
[zk: k8s-m1:2181(CONNECTED) 19] stat /bb
cZxid = 0x20000001b
ctime = Thu Aug 31 20:31:06 CST 2023
mZxid = 0x20000001b
mtime = Thu Aug 31 20:31:06 CST 2023
pZxid = 0x20000001b
cversion = 0
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 16
numChildren = 0

(3)在aa节点下面新增节点bb,pZxid、cversion、numChildren 发生改变

[zk: k8s-m1:2181(CONNECTED) 21] create /aa/bb 'aabb'
Created /aa/bb
[zk: k8s-m1:2181(CONNECTED) 22] stat /aa            
cZxid = 0x200000019
ctime = Thu Aug 31 20:27:57 CST 2023
mZxid = 0x20000001a
mtime = Thu Aug 31 20:28:32 CST 2023
pZxid = 0x20000001c
cversion = 1
dataVersion = 1
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 2
numChildren = 1

(4)ephemeralOwner 持久性的节点信息是0x0临时的几点信息是本次会话的sessionid,如图
【zookeeper】zookeeper的shell操作,zookeeper,zookeeper
(5) 查看leader并将其干掉,此时将选择另一台机器成为leader,重新创建一个文件ff,此时发现czxid的前3位和之前发生变化,说明换了leader。其实前3位应该就是我们设置的serverid值。

#k8s-m2为leader
[root@k8s-m2 tmp]# /opt/apache-zookeeper-3.7.1-bin/bin/zkServer.sh  status
ZooKeeper JMX enabled by default
Using config: /opt/apache-zookeeper-3.7.1-bin/bin/../conf/zoo.cfg
Mode: leader
[root@k8s-m2 tmp]# /opt/apache-zookeeper-3.7.1-bin/bin/zkServer.sh  stop
ZooKeeper JMX enabled by default
Using config: /opt/apache-zookeeper-3.7.1-bin/bin/../conf/zoo.cfg
Stopping zookeeper ... STOPPED

#在原来的界面继续操作
[zk: k8s-m1:2181(CONNECTED) 2] create /f 'ff'                   
Created /f
[zk: k8s-m1:2181(CONNECTED) 3] stat /f
cZxid = 0x300000001
ctime = Thu Aug 31 20:40:25 CST 2023
mZxid = 0x300000001
mtime = Thu Aug 31 20:40:25 CST 2023
pZxid = 0x300000001
cversion = 0
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 2
numChildren = 0
[zk: k8s-m1:2181(CONNECTED) 4] 

更多关于zookeeper的知识分享,请前往博客主页。编写过程中,能力有限难免出现差错,敬请指正文章来源地址https://www.toymoban.com/news/detail-700249.html

到了这里,关于【zookeeper】zookeeper的shell操作的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • ZooKeeper的安装与操作

    ZooKeeper是一个分布式的、开放源码的分布式应用程序协调服务,它是Google的Chubby服务的开源实现,也是Hadoop和HBase等大数据生态系统中的重要组件。ZooKeeper的目标是为分布式应用提供一致性服务,包括配置维护、域名服务、分布式同步和组服务等。它封装了复杂且易出错的关

    2024年04月15日
    浏览(29)
  • Zookeeper基础操作

    windows下部署 下载地址: https://mirrors.cloud.tencent.com/apache/zookeeper/zookeeper-3.7.1/ 修改配置文件 打开conf目录,将 zoo_sample.cfg 复制一份,命名为 zoo.cfg 打开 zoo.cfg ,修改 dataDir 路径,新增日志 dataLogDir 路径 dataDir=…/data dataLogDir=…/log zoo.cfg 配置文件说明 启动Zookeeper linux下部署 前提

    2024年02月14日
    浏览(32)
  • Zookeeper基础命令操作

    mZxid = 0x0 mtime = Thu Jan 01 00:00:00 UTC 1970 pZxid = 0x0 cversion = -1 dataVersion = 0 aclVersion = 0 ephemeralOwner = 0x0 dataLength = 0 numChildren = 1 [zk: localhost:2181(CONNECTED) 11] create 创建节点 create [-s] [-e] path data acl  可以注意一下各个版本的变化 #创建merryyou节点,节点的内容为merryyou [zk: localhost:2181(CON

    2024年04月27日
    浏览(26)
  • 大数据Zookeeper--集群操作

    1)集群规划 在hadoop102、hadoop103 和 hadoop104 三个节点上都部署Zookeeper。 2)解压安装 (1)在hadoop102解压Zookeeper安装包到/opt/module/目录下 (2)修改apache-zookeeper-3.5.7-bin 名称为 zookeeper-3.5.7 3)配置服务器编号 (1)在/opt/module/zookeeper-3.5.7/这个目录下创建 zkData (2)在/opt/module/z

    2024年02月20日
    浏览(35)
  • zookeeper 常用操作

    1.zk 启停操作 2.连接ck 3.创建znode 4.删除znode 5. 设置或者修改节点内容 6.ACL 权限控制 7.查询节点内容及状态信息

    2024年02月11日
    浏览(32)
  • Zookeeper-JavaApI操作

    Curator 是 Apache ZooKeeper 的Java客户端库。 常见的ZooKeeper Java API : 原生Java API ZkClient Curator Curator 项目的目标是简化 ZooKeeper 客户端的使用。 Curator 最初是 Netfix 研发的,后来捐献了 Apache 基金会,目前是 Apache 的顶级项目。 官网:http://curator.apache.org/ a) 建立连接与CRUD基本操作 Cura

    2024年02月07日
    浏览(35)
  • Zookeeper安装及基本操作

    ZooKeeper是一个开源的分布式应用程序协调服务 简单来说可以理解为zookeeper = 文件系统+监听通知机制 应用场景: 集群管理、服务器状态感知 分布式应用配置管理 统一命名服务 分布式锁 小总结: 为客户提供写数据功能 数据不大 状态信息数据 为客户提供读取据功能 为用户提

    2024年02月08日
    浏览(44)
  • linux shell操作- 03 用户切换及shell案例

    linux是多用户的、多进程的操作系统,通常多个用户之间需要来回切换; su,switch user 命令 参数 - , 切换用户,同时切换工作目录(为目标用户的家目录) 参数 -c cmd,切换到目标用户,执行一条指令,然后切回原用户; 参数 -m -p ,保持原用户的环境变量; 参数 -l,重新登

    2024年02月06日
    浏览(40)
  • 六、ZooKeeper Java API操作

    目录 1、引入maven坐标 2、节点的操作 这里操作Zookeeper的JavaAPI使用的是一套zookeeper客户端框架 Curator ,解决了很多Zookeeper客户端非常底层的细节开发工作 。 Curator包含了几个包:

    2024年02月04日
    浏览(33)
  • zookeeper之节点基本操作(头歌)

    开启ZooKeeper服务器。 使用客户端(zkCli.sh)连接客户端(IP:127.0.0.1,端口号:2181)。 创建/enode临时节点(节点数据为空)。 创建/spnode持久节点(节点数据为空)。 断开客户端(zkCli.sh)与客服端连接。 本关任务是使用命令行,进行以下操作: 开启ZooKeeper服务器。 使用客

    2024年02月03日
    浏览(52)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包