日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

2021年大数据ZooKeeper(四):ZooKeeper的shell操作

發(fā)布時(shí)間:2023/11/28 生活经验 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 2021年大数据ZooKeeper(四):ZooKeeper的shell操作 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

目錄

ZooKeeper的shell操作

客戶端連接

shell基本操作

操作命令

操作實(shí)例

節(jié)點(diǎn)屬性

???????ZooKeeper?Watcher(監(jiān)聽機(jī)制)

???????Watch機(jī)制特點(diǎn)

???????通知狀態(tài)和事件類型

???????Shell 客戶端設(shè)置watcher


ZooKeepershell操作

客戶端連接

運(yùn)行?zkCli.sh?–server?ip???進(jìn)入命令行工具。

bin/zkCli.sh ?-server node1:2181

shell基本操作

操作命令

命令

說明

參數(shù)

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

創(chuàng)建Znode

-s 指定是順序節(jié)點(diǎn)<br>-e 指定是臨時(shí)節(jié)點(diǎn)

ls path [watch]

列出Path下所有子Znode

get path [watch]

獲取Path對(duì)應(yīng)的Znode的數(shù)據(jù)和屬性

ls2 path [watch]

查看Path下所有子Znode以及子Znode的屬性

set path data [version]

更新節(jié)點(diǎn)

version 數(shù)據(jù)版本

delete path [version]

刪除節(jié)點(diǎn), 如果要?jiǎng)h除的節(jié)點(diǎn)有子Znode則無法刪除

version 數(shù)據(jù)版本

rmr path

刪除節(jié)點(diǎn), 如果有子Znode則遞歸刪除

setquota -n|-b val path

修改Znode配額

-n 設(shè)置子節(jié)點(diǎn)最大個(gè)數(shù)<br>-b 設(shè)置節(jié)點(diǎn)數(shù)據(jù)最大長(zhǎng)度

history

列出歷史記錄

???????操作實(shí)例

1:創(chuàng)建普通節(jié)點(diǎn)

?create /app1 hello

2: 創(chuàng)建順序節(jié)點(diǎn)

create -s /app2 world

3:創(chuàng)建臨時(shí)節(jié)點(diǎn)

create -e /tempnode world

4:創(chuàng)建順序的臨時(shí)節(jié)點(diǎn)

create -s -e /tempnode2 aaa

5:獲取節(jié)點(diǎn)數(shù)據(jù)

get ?/app1

6:修改節(jié)點(diǎn)數(shù)據(jù)

set /app1 ?hadoop

7:刪除節(jié)點(diǎn)

??delete ?/app1 刪除的節(jié)點(diǎn)不能有子節(jié)點(diǎn)

??rmr ???/app1 遞歸刪除

???????節(jié)點(diǎn)屬性

每個(gè)znode都包含了一系列的屬性,通過命令get,可以獲得節(jié)點(diǎn)的屬性。

dataVersion:數(shù)據(jù)版本號(hào),每次對(duì)節(jié)點(diǎn)進(jìn)行set操作,dataVersion的值都會(huì)增加1(即使設(shè)置的是相同的數(shù)據(jù)),可有效避免了數(shù)據(jù)更新時(shí)出現(xiàn)的先后順序問題。

cversion :子節(jié)點(diǎn)的版本號(hào)。當(dāng)znode的子節(jié)點(diǎn)有變化時(shí),cversion 的值就會(huì)增加1。

cZxid :Znode創(chuàng)建的事務(wù)id。

mZxid :Znode被修改的事務(wù)id,即每次對(duì)znode的修改都會(huì)更新mZxid。

對(duì)于zk來說,每次的變化都會(huì)產(chǎn)生一個(gè)唯一的事務(wù)id,zxid(ZooKeeper Transaction Id)。通過zxid,可以確定更新操作的先后順序。例如,如果zxid1小于zxid2,說明zxid1操作先于zxid2發(fā)生,zxid對(duì)于整個(gè)zk都是唯一的,即使操作的是不同的znode。

ctime:節(jié)點(diǎn)創(chuàng)建時(shí)的時(shí)間戳.

mtime:節(jié)點(diǎn)最新一次更新發(fā)生時(shí)的時(shí)間戳.

ephemeralOwner:如果該節(jié)點(diǎn)為臨時(shí)節(jié)點(diǎn), ephemeralOwner值表示與該節(jié)點(diǎn)綁定的session id. 如果不是, ephemeralOwner值為0.

在client和server通信之前,首先需要建立連接,該連接稱為session。連接建立后,如果發(fā)生連接超時(shí)、授權(quán)失敗,或者顯式關(guān)閉連接,連接便處于CLOSED狀態(tài), 此時(shí)session結(jié)束。

???????ZooKeeper?Watcher(監(jiān)聽機(jī)制)

ZooKeeper提供了分布式數(shù)據(jù)發(fā)布/訂閱功能,一個(gè)典型的發(fā)布/訂閱模型系統(tǒng)定義了一種一對(duì)多的訂閱關(guān)系,能讓多個(gè)訂閱者同時(shí)監(jiān)聽某一個(gè)主題對(duì)象,當(dāng)這個(gè)主題對(duì)象自身狀態(tài)變化時(shí),會(huì)通知所有訂閱者,使他們能夠做出相應(yīng)的處理。

ZooKeeper中,引入了Watcher機(jī)制來實(shí)現(xiàn)這種分布式的通知功能。ZooKeeper允許客戶端向服務(wù)端注冊(cè)一個(gè)Watcher監(jiān)聽,當(dāng)服務(wù)端的一些事件觸發(fā)了這個(gè)Watcher,那么就會(huì)向指定客戶端發(fā)送一個(gè)事件通知來實(shí)現(xiàn)分布式的通知功能。

觸發(fā)事件種類很多,如:節(jié)點(diǎn)創(chuàng)建,節(jié)點(diǎn)刪除,節(jié)點(diǎn)改變,子節(jié)點(diǎn)改變等。

總的來說可以概括Watcher為以下三個(gè)過程:客戶端向服務(wù)端注冊(cè)Watcher、服務(wù)端事件發(fā)生觸發(fā)Watcher、客戶端回調(diào)Watcher得到觸發(fā)事件情況

???????Watch機(jī)制特點(diǎn)

一次性觸發(fā)?

事件發(fā)生觸發(fā)監(jiān)聽,一個(gè)watcher event就會(huì)被發(fā)送到設(shè)置監(jiān)聽的客戶端,這種效果是一次性的,后續(xù)再次發(fā)生同樣的事件,不會(huì)再次觸發(fā)。

事件封裝

ZooKeeper使用WatchedEvent對(duì)象來封裝服務(wù)端事件并傳遞。

WatchedEvent包含了每一個(gè)事件的三個(gè)基本屬性:

通知狀態(tài)(keeperState)事件類型(EventType)節(jié)點(diǎn)路徑(path)

event異步發(fā)送 ?

watcher的通知事件從服務(wù)端發(fā)送到客戶端是異步的。

先注冊(cè)再觸發(fā)

Zookeeper中的watch機(jī)制,必須客戶端先去服務(wù)端注冊(cè)監(jiān)聽,這樣事件發(fā)送才會(huì)觸發(fā)監(jiān)聽,通知給客戶端。

???????通知狀態(tài)和事件類型

同一個(gè)事件類型在不同的通知狀態(tài)中代表的含義有所不同,下表列舉了常見的通知狀態(tài)和事件類型。

事件封裝: Watcher?得到的事件是被封裝過的, 包括三個(gè)內(nèi)容 keeperState, eventType, path

KeeperState

EventType

觸發(fā)條件

說明

None

連接成功

SyncConnected

NodeCreated

Znode被創(chuàng)建

此時(shí)處于連接狀態(tài)

SyncConnected

NodeDeleted

Znode被刪除

此時(shí)處于連接狀態(tài)

SyncConnected

NodeDataChanged

Znode數(shù)據(jù)被改變

此時(shí)處于連接狀態(tài)

SyncConnected

NodeChildChanged

Znode的子Znode數(shù)據(jù)被改變

此時(shí)處于連接狀態(tài)

Disconnected

None

客戶端和服務(wù)端斷開連接

此時(shí)客戶端和服務(wù)器處于斷開連接狀態(tài)

Expired

None

會(huì)話超時(shí)

會(huì)收到一個(gè)SessionExpiredExceptio

AuthFailed

None

權(quán)限驗(yàn)證失敗

會(huì)收到一個(gè)AuthFailedException

其中連接狀態(tài)事件(type=None, path=null)不需要客戶端注冊(cè),客戶端只要有需要直接處理就行了。

???????Shell 客戶端設(shè)置watcher

設(shè)置節(jié)點(diǎn)數(shù)據(jù)變動(dòng)監(jiān)聽:

通過另一個(gè)客戶端更改節(jié)點(diǎn)數(shù)據(jù):

此時(shí)設(shè)置監(jiān)聽的節(jié)點(diǎn)收到通知:

總結(jié)

以上是生活随笔為你收集整理的2021年大数据ZooKeeper(四):ZooKeeper的shell操作的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。