大數據教程(3.6):zookeeper的命令行客戶端+znode數據結構類型+監聽等功能_

    上一篇文章,博主介紹了zookeeper集羣的搭建全過程;今天博主將爲你們分享的是zookeeper的命令行客戶端使用、zookeeper的數據結構和監聽功能。node

   zookeeper啓動與關閉服務的命令:windows

./bin/zkServer.sh  start 開啓zookeeper
./bin/zkServer.sh  stop 中止zookeeper

    1、zookeeper數據結構服務器

        zookeeper特性:session

         1)、Zookeeper:一個leader,多個follower組成的集羣
         2)、全局數據一致:每一個server保存一份相同的數據副本,client不管鏈接到哪一個server,數據都是一致的
         3)、分佈式讀寫,更新請求轉發,由leader實施
         4)、更新請求順序進行,來自同一個client的更新請求按其發送順序依次執行
         5)、數據更新原子性,一次數據更新要麼成功,要麼失敗
         6)、實時性,在必定時間範圍內,client能讀到最新數據數據結構

        zookeeper數據結構:app

         1)、層次化的目錄結構,命名符合常規文件系統規範(見下圖)
         2)、每一個節點在zookeeper中叫作znode,而且其有一個惟一的路徑標識
         3)、節點Znode能夠包含數據和子節點(EPHEMERAL短暫類型的節點不能有子節點)
         4)、客戶端應用能夠在節點上設置監視器  分佈式

        數據結構的圖:工具

        節點類型ui

         1)、Znode有兩種類型:
                短暫(ephemeral)(斷開鏈接本身刪除)
                持久(persistent)(斷開鏈接不刪除)
         2)、Znode有四種形式的目錄節點(默認是persistent )
                PERSISTENT                                 -----永久節點
                PERSISTENT_SEQUENTIAL(持久序列/test0000000019 ) ------永久序號節點
                EPHEMERAL                                 -----臨時節點(短暫節點)
                EPHEMERAL_SEQUENTIAL           ------短暫序號節點           
         3)、建立znode時設置順序標識,znode名稱後會附加一個值,順序號是一個單調遞增的計數器,由父節點維護
         4)、在分佈式系統中,順序號能夠被用於爲全部的事件進行全局排序,這樣客戶端能夠經過順序號推斷事件的順序命令行

  2、zookeeper命令行客戶端初識   

         zookeeper的客戶端和其它可執行命令都在其bin目錄中,分別是zkCli.sh和zkCli.cmd,前者是Linux中使用的客戶端啓動腳本,後者是windows系統中的客戶端啓動腳本。

        1)、運行 zkCli.sh –server <ip>進入命令行工具:./zkCli.sh -server 192.168.29.135

cd /opt/apps/zookeeper-3.4.13/bin     
./zkCli.sh -server 192.168.29.135   若是不指定-server參數,鏈接的是本機ip

        2)、命令行客戶端鏈接上zookeeper後,輸入help可查看zookeeper命令幫助

        3)、客戶端命令例子

一、使用 ls 命令來查看當前 ZooKeeper 中所包含的內容:
[zk: 192.168.29.135(CONNECTED) 1] ls /
二、建立一個新的 znode ,使用 create /zk myData 。這個命令建立了一個新的 znode 節點「 zk 」以及與它關聯的字符串,默認爲建立永久節點:
[zk: 192.168.29.135(CONNECTED) 2] create /zk "myData「
三、咱們運行 get 命令來確認 znode 是否包含咱們所建立的字符串:
[zk: 192.168.29.135(CONNECTED) 3] get /zk
//數據描述信息
""
cZxid=0x30000004建立事務id
ctime=Tue apr 05 02:35:02 CST 2016
mZxid=0x30000004修改事務id
mtime=Tue apr 05 02:35:02 CST 2016
cversion=1建立版本號,
dataversion=1 數據版本號
aclversion=0 權限版本號
ephemeralOwner
dataLength=5數據長度
numChildren=1子節點數
#監聽這個節點的變化,當另一個客戶端改變/zk時,它會打出下面的
#WATCHER::
#WatchedEvent state:SyncConnected type:NodeDataChanged path:/zk
[zk: 192.168.29.135(CONNECTED) 4] get /zk watch
四、下面咱們經過 set 命令來對 zk 所關聯的字符串進行設置:
[zk: 192.168.29.135(CONNECTED) 5] set /zk "zsl「
五、下面咱們將剛纔建立的 znode 刪除,只能刪除葉子節點:
[zk: 192.168.29.135(CONNECTED) 6] delete /zk
六、刪除節點,可刪除非葉子節點及其下的子節點的全部數據:rmr
[zk: 192.168.29.135(CONNECTED) 7] rmr /zk
七、建立短暫節點(客戶端退出後自動刪除)
[zk: 192.168.29.135(CONNECTED) 8] create -e  /aap2 「bbb」 
八、帶序號的短暫節點,zookeeper在建立帶序號的節點時,若是歷來沒建立過,序號衝0開始,反之從1開始
[zk: 192.168.29.135(CONNECTED) 9] create  -s  -e  /aap2 「bbb」 
九、設置值
[zk: 192.168.29.135(CONNECTED) 10] set /app1  bbbb
十、拿數據而且註冊監聽本節點數據的變化(監聽只生效一次)
[zk: 192.168.29.135(CONNECTED) 11] get /app1 watch 
十一、獲取子節點變化的監聽
[zk: 192.168.29.135(CONNECTED) 12] ls /app1 watch 
十二、quit退出zookeeper客戶端
[zk: 192.168.29.135(CONNECTED) 12] quit

3、zookeeper命令行客戶端命令詳解

        1)、connect命令,鏈接zk服務端,(與close命令配合使用能夠鏈接或者斷開zk服務端),可用於更換鏈接的zookeeper服務器:

        2)、close命令,用於關閉與服務端的連接

        3)、get命令,用於獲取節點的信息,注意節點的路徑必須是以/開頭的絕對路徑。如get /

數據詳細信息說明:
cZxid:節點建立時的zxid
ctime:節點建立時間
mZxid:節點最近一次更新時的zxid
mtime:節點最近一次更新的時間
cversion:子節點數據更新次數
dataVersion:本節點數據更新次數
aclVersion:節點ACL(受權信息)的更新次數
ephemeralOwner:若是該節點爲臨時節點,ephemeralOwner值表示與該節點綁定的session id. 若是該節點不是臨時節點,ephemeralOwner值爲0
dataLength:節點數據長度,本例中爲根節點/的長度
numChildren:子節點個數    

        4)、stat命令,用於查看節點的狀態信息,如stat /;該命令的結果參數說明同get命令

        5)、set命令,用於設置節點的數據,如:set /userid2 32222

        6)、ls命令是用於獲取路徑下的節點信息,注意路徑爲絕對路徑,如:ls2 /userid2

        7)、ls2命令是ls命令的加強版,比ls命令多輸出本節點信息,如:ls2 /userid2

        8)、listquota命令用於顯示配額,如listquota /userid3

        9)、setquota命令用於設置節點個數以及數據長度的配額,如:

setquota –n 4 /userid3 設置/userid3子節點個數最大爲4
setquota –b 100 /userid3 設置/userid3節點長度最大爲100

        10)、delquota命令用於刪除配額,-n爲子節點個數,-b爲節點數據長度,如:delquota –n 2

        11)、history用於列出最近的命令歷史,能夠和redo配合使用。如history

        12)、redo命令用於再次執行某個命令,使用方式爲redo cmdid 如 redo 20,常與history配合使用

        13)、create命令用於建立節點,其中-s爲順序充點,-e臨時節點

        14)、delete命令用於刪除節點,如delete /userid3

        15)、addauth命令用於節點認證,使用方式:如addauth digest username:password

        16)、setAcl命令用於設置節點Acl

                Acl由三部分構成:1爲scheme,2爲user,3爲permission,通常狀況下表示爲scheme:id:permissions

        17)、getAcl命令獲取節點的Acl,如getAcl /node1

        18)、sync命令用於強制同步,因爲請求在半數以上的zk server上生效就表示此請求生效,那麼就會有一些zk server上的數據是舊的。sync命令就是強制同步全部的更新操做。

        19)、printWatchers命令用於設置和顯示監視狀態,值爲on或則off

        20)、quit命令退出客戶端

相關文章
相關標籤/搜索