• 【Zookeeper】03 单机操作


    访问Zookeeper

    开启Zookeeper服务程序:

    ./zkServer.sh start

    启动Zookeeper客户端进行访问:

    ./zkCli.sh 

    运行打印:

    [root@VM-0-7-centos bin]# ./zkCli.sh 
    /usr/bin/java
    Connecting to localhost:2181
    2020-08-07 09:08:15,680 [myid:] - INFO  [main:Environment@109] - Client environment:zookeeper.version=3.5.8-f439ca583e70862c3068a1f2a7d4d068eec33315, built on 05/04/2020 15:07 GMT
    2020-08-07 09:08:15,683 [myid:] - INFO  [main:Environment@109] - Client environment:host.name=VM-0-7-centos
    2020-08-07 09:08:15,683 [myid:] - INFO  [main:Environment@109] - Client environment:java.version=1.8.0_252
    2020-08-07 09:08:15,687 [myid:] - INFO  [main:Environment@109] - Client environment:java.vendor=Oracle Corporation
    2020-08-07 09:08:15,687 [myid:] - INFO  [main:Environment@109] - Client environment:java.home=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.252.b09-2.el7_8.x86_64/jre
    2020-08-07 09:08:15,687 [myid:] - INFO  [main:Environment@109] - Client environment:java.class.path=/usr/local/zookeeper/bin/../zookeeper-server/target/classes:/usr/local/zookeeper/bin/../build/classes:/usr/local/zookeeper/bin/../zookeeper-server/target/lib/*.jar:/usr/local/zookeeper/bin/../build/lib/*.jar:/usr/local/zookeeper/bin/../lib/zookeeper-jute-3.5.8.jar:/usr/local/zookeeper/bin/../lib/zookeeper-3.5.8.jar:/usr/local/zookeeper/bin/../lib/slf4j-log4j12-1.7.25.jar:/usr/local/zookeeper/bin/../lib/slf4j-api-1.7.25.jar:/usr/local/zookeeper/bin/../lib/netty-transport-native-unix-common-4.1.48.Final.jar:/usr/local/zookeeper/bin/../lib/netty-transport-native-epoll-4.1.48.Final.jar:/usr/local/zookeeper/bin/../lib/netty-transport-4.1.48.Final.jar:/usr/local/zookeeper/bin/../lib/netty-resolver-4.1.48.Final.jar:/usr/local/zookeeper/bin/../lib/netty-handler-4.1.48.Final.jar:/usr/local/zookeeper/bin/../lib/netty-common-4.1.48.Final.jar:/usr/local/zookeeper/bin/../lib/netty-codec-4.1.48.Final.jar:/usr/local/zookeeper/bin/../lib/netty-buffer-4.1.48.Final.jar:/usr/local/zookeeper/bin/../lib/log4j-1.2.17.jar:/usr/local/zookeeper/bin/../lib/json-simple-1.1.1.jar:/usr/local/zookeeper/bin/../lib/jline-2.11.jar:/usr/local/zookeeper/bin/../lib/jetty-util-9.4.24.v20191120.jar:/usr/local/zookeeper/bin/../lib/jetty-servlet-9.4.24.v20191120.jar:/usr/local/zookeeper/bin/../lib/jetty-server-9.4.24.v20191120.jar:/usr/local/zookeeper/bin/../lib/jetty-security-9.4.24.v20191120.jar:/usr/local/zookeeper/bin/../lib/jetty-io-9.4.24.v20191120.jar:/usr/local/zookeeper/bin/../lib/jetty-http-9.4.24.v20191120.jar:/usr/local/zookeeper/bin/../lib/javax.servlet-api-3.1.0.jar:/usr/local/zookeeper/bin/../lib/jackson-databind-2.10.3.jar:/usr/local/zookeeper/bin/../lib/jackson-core-2.10.3.jar:/usr/local/zookeeper/bin/../lib/jackson-annotations-2.10.3.jar:/usr/local/zookeeper/bin/../lib/commons-cli-1.2.jar:/usr/local/zookeeper/bin/../lib/audience-annotations-0.5.0.jar:/usr/local/zookeeper/bin/../zookeeper-*.jar:/usr/local/zookeeper/bin/../zookeeper-server/src/main/resources/lib/*.jar:/usr/local/zookeeper/bin/../conf:
    2020-08-07 09:08:15,688 [myid:] - INFO  [main:Environment@109] - Client environment:java.library.path=/usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib
    2020-08-07 09:08:15,688 [myid:] - INFO  [main:Environment@109] - Client environment:java.io.tmpdir=/tmp
    2020-08-07 09:08:15,688 [myid:] - INFO  [main:Environment@109] - Client environment:java.compiler=<NA>
    2020-08-07 09:08:15,688 [myid:] - INFO  [main:Environment@109] - Client environment:os.name=Linux
    2020-08-07 09:08:15,688 [myid:] - INFO  [main:Environment@109] - Client environment:os.arch=amd64
    2020-08-07 09:08:15,688 [myid:] - INFO  [main:Environment@109] - Client environment:os.version=3.10.0-1062.18.1.el7.x86_64
    2020-08-07 09:08:15,688 [myid:] - INFO  [main:Environment@109] - Client environment:user.name=root
    2020-08-07 09:08:15,688 [myid:] - INFO  [main:Environment@109] - Client environment:user.home=/root
    2020-08-07 09:08:15,688 [myid:] - INFO  [main:Environment@109] - Client environment:user.dir=/usr/local/zookeeper/bin
    2020-08-07 09:08:15,688 [myid:] - INFO  [main:Environment@109] - Client environment:os.memory.free=23MB
    2020-08-07 09:08:15,690 [myid:] - INFO  [main:Environment@109] - Client environment:os.memory.max=247MB
    2020-08-07 09:08:15,691 [myid:] - INFO  [main:Environment@109] - Client environment:os.memory.total=29MB
    2020-08-07 09:08:15,694 [myid:] - INFO  [main:ZooKeeper@868] - Initiating client connection, connectString=localhost:2181 sessionTimeout=30000 watcher=org.apache.zookeeper.ZooKeeperMain$MyWatcher@484b61fc
    2020-08-07 09:08:15,704 [myid:] - INFO  [main:X509Util@79] - Setting -D jdk.tls.rejectClientInitiatedRenegotiation=true to disable client-initiated TLS renegotiation
    2020-08-07 09:08:15,711 [myid:] - INFO  [main:ClientCnxnSocket@237] - jute.maxbuffer value is 4194304 Bytes
    2020-08-07 09:08:15,727 [myid:] - INFO  [main:ClientCnxn@1653] - zookeeper.request.timeout value is 0. feature enabled=
    2020-08-07 09:08:15,737 [myid:localhost:2181] - INFO  [main-SendThread(localhost:2181):ClientCnxn$SendThread@1112] - Opening socket connection to server localhost/0:0:0:0:0:0:0:1:2181. Will not attempt to authenticate using SASL (unknown error)
    Welcome to ZooKeeper!
    JLine support is enabled
    2020-08-07 09:08:15,876 [myid:localhost:2181] - INFO  [main-SendThread(localhost:2181):ClientCnxn$SendThread@959] - Socket connection established, initiating session, client: /0:0:0:0:0:0:0:1:48090, server: localhost/0:0:0:0:0:0:0:1:2181
    [zk: localhost:2181(CONNECTING) 0] 2020-08-07 09:08:15,920 [myid:localhost:2181] - INFO  [main-SendThread(localhost:2181):ClientCnxn$SendThread@1394] - Session establishment complete on server localhost/0:0:0:0:0:0:0:1:2181, sessionid = 0x100048bdb4c0000, negotiated timeout = 30000
    
    WATCHER::
    
    

    输入quit回车退出zookeeper客户端:

    WatchedEvent state:SyncConnected type:None path:null
    quit
    
    WATCHER::
    
    WatchedEvent state:Closed type:None path:null
    2020-08-07 09:08:23,890 [myid:] - INFO  [main:ZooKeeper@1422] - Session: 0x100048bdb4c0000 closed
    2020-08-07 09:08:23,891 [myid:] - INFO  [main-EventThread:ClientCnxn$EventThread@524] - EventThread shut down for session: 0x100048bdb4c0000

    创建节点:

    语法:

    create [-s] [-e] path data acl

    参数说明:

    -s表示顺序节点,
    -e表示临时节点
    默认情况下,创建的是持久节点。
    
    path是节点路径,
    data是节点数据,
    acl用来进行权限控制

    案例:

    create /sanguo  luoguanzhong  
    创建一个持久节点目录为/sanguo    值为  luoguanzhong
    
    create -s /shuihu  shinaian  
    创建一个持久顺序节点目录为/shuihu  值为  shinaian
    
    create -e /xiyou  wuchengren  
    创建一个临时节点目录为/xiyou  值为  wuchengren 
    
    create -e -s /honglou  caoxueqing  
    创建一个临时顺序节点目录为/honglou  值为 caoxueqing  

    我的测试:

    WATCHER::
    
    WatchedEvent state:SyncConnected type:None path:null
    [zk: localhost:2181(CONNECTED) 0] create -e /zkNode01 dzz
    Created /zkNode01
    [zk: localhost:2181(CONNECTED) 1] 

     

    查看节点内容:

    使用get命令,获取zookeeper指定节点的内容和属性信息

    [zk: localhost:2181(CONNECTED) 1] get /zkNode01
    dzz

    如果输入完整信息get

    [zk: localhost:2181(CONNECTED) 2] get /zkNode01 dzz
    'get path [watch]' has been deprecated. Please use 'get [-s] [-w] path' instead.

    ZK提示此命令已经过时不适用了,要求使用 -s & -w 参数进行获取

    [zk: localhost:2181(CONNECTED) 4] get -s -w /zkNode01
    dzz
    cZxid = 0x4
    ctime = Fri Aug 07 09:16:10 CST 2020
    mZxid = 0x4
    mtime = Fri Aug 07 09:16:10 CST 2020
    pZxid = 0x4
    cversion = 0
    dataVersion = 0
    aclVersion = 0
    ephemeralOwner = 0x100048bdb4c0001
    dataLength = 3
    numChildren = 0

    也可以使用stat命名查看:

    stat /zkNode01

    若是需要查看子节点:

    ls /
    查看根节点下的所有子节点
    
    ls 指定的节点
    查看该节点下的所有子节点

    查看根的子节点们:

    [zk: localhost:2181(CONNECTED) 5] ls /
    [zkNode01, zookeeper]

    除了我们刚刚创建zkNode01,发现还有一个节点,名称就为zookeeper

    查看这个节点的信息:

    [zk: localhost:2181(CONNECTED) 6] get -s -w /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 = -2
    dataVersion = 0
    aclVersion = 0
    ephemeralOwner = 0x0
    dataLength = 0
    numChildren = 2

    更新修改节点内容:

    使用set命令,更新节点内容。

    语法:

    set path data 
    其中的data就是要更新的新内容。

    其实更新的是节点的data

    [zk: localhost:2181(CONNECTED) 31] get -s -w /zkNode01 
    123
    cZxid = 0x4
    ctime = Fri Aug 07 09:16:10 CST 2020
    mZxid = 0x8
    mtime = Fri Aug 07 09:39:15 CST 2020
    pZxid = 0x4
    cversion = 0
    dataVersion = 4
    aclVersion = 0
    ephemeralOwner = 0x100048bdb4c0001
    dataLength = 3
    numChildren = 0

    每一次更新 dataVersion都会追加修改的记录次数

    删除节点:

    首先节点结构是一个树状结构,也就是说一个节点下面会有N个子节点,也可能没有

    如果我们某一个节点进行删除,那么也就代表着该节点下面的后代节点都将被删除,

    Zookeeper在我们执行删除节点的操作时会判断有无后代节点,如果有是不允许删除该节点的

    例如这样:

    [zk: localhost:2181(CONNECTED) 31]  delete /someNode
    Node not empty : /someNode

    我们刚刚创建的节点下面并没有其他子节点,所有删除正常:

    [zk: localhost:2181(CONNECTED) 32] delete /zkNode01
    
    WATCHER::
    
    WatchedEvent state:SyncConnected type:NodeDeleted path:/zkNode01

    但是如果需要删除该节点和所有子节点操作的话,是使用此命令:

    rmr 节点路径

    监控节点:

    我们再开启一个XSHELL访问:

    在下面客户端创建一个新节点,并且 在上面的客户端中获取节点信息并且监视节点

    当节点的数据进行修改,上面的客户端就会监听到改动:

  • 相关阅读:
    哈夫曼树
    顺序栈和链栈
    线性表(二) 单链表的增删改查及源码 (修改)
    线性表(二):单链表的增删改查及源码
    线性表(一):顺序表的增删改查及源码
    从头学数据结构--跟随浙大陈越姥姥的步伐
    Java学习笔记--scanner获取键盘输入
    关于方法、变量、类等命名规范
    Java学习笔记--类型自动转换、强制类型转换、溢出
    java学习笔记--重载
  • 原文地址:https://www.cnblogs.com/mindzone/p/13450944.html
Copyright © 2020-2023  润新知