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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

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

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

目錄

ZooKeeper的shell操作

客戶端連接

shell基本操作

操作命令

操作實例

節點屬性

???????ZooKeeper?Watcher(監聽機制)

???????Watch機制特點

???????通知狀態和事件類型

???????Shell 客戶端設置watcher


ZooKeepershell操作

客戶端連接

運行?zkCli.sh?–server?ip???進入命令行工具。

bin/zkCli.sh ?-server node1:2181

shell基本操作

操作命令

命令

說明

參數

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

創建Znode

-s 指定是順序節點<br>-e 指定是臨時節點

ls path [watch]

列出Path下所有子Znode

get path [watch]

獲取Path對應的Znode的數據和屬性

ls2 path [watch]

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

set path data [version]

更新節點

version 數據版本

delete path [version]

刪除節點, 如果要刪除的節點有子Znode則無法刪除

version 數據版本

rmr path

刪除節點, 如果有子Znode則遞歸刪除

setquota -n|-b val path

修改Znode配額

-n 設置子節點最大個數<br>-b 設置節點數據最大長度

history

列出歷史記錄

???????操作實例

1:創建普通節點

?create /app1 hello

2: 創建順序節點

create -s /app2 world

3:創建臨時節點

create -e /tempnode world

4:創建順序的臨時節點

create -s -e /tempnode2 aaa

5:獲取節點數據

get ?/app1

6:修改節點數據

set /app1 ?hadoop

7:刪除節點

??delete ?/app1 刪除的節點不能有子節點

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

???????節點屬性

每個znode都包含了一系列的屬性,通過命令get,可以獲得節點的屬性。

dataVersion:數據版本號,每次對節點進行set操作,dataVersion的值都會增加1(即使設置的是相同的數據),可有效避免了數據更新時出現的先后順序問題。

cversion :子節點的版本號。當znode的子節點有變化時,cversion 的值就會增加1。

cZxid :Znode創建的事務id。

mZxid :Znode被修改的事務id,即每次對znode的修改都會更新mZxid。

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

ctime:節點創建時的時間戳.

mtime:節點最新一次更新發生時的時間戳.

ephemeralOwner:如果該節點為臨時節點, ephemeralOwner值表示與該節點綁定的session id. 如果不是, ephemeralOwner值為0.

在client和server通信之前,首先需要建立連接,該連接稱為session。連接建立后,如果發生連接超時、授權失敗,或者顯式關閉連接,連接便處于CLOSED狀態, 此時session結束。

???????ZooKeeper?Watcher(監聽機制)

ZooKeeper提供了分布式數據發布/訂閱功能,一個典型的發布/訂閱模型系統定義了一種一對多的訂閱關系,能讓多個訂閱者同時監聽某一個主題對象,當這個主題對象自身狀態變化時,會通知所有訂閱者,使他們能夠做出相應的處理。

ZooKeeper中,引入了Watcher機制來實現這種分布式的通知功能。ZooKeeper允許客戶端向服務端注冊一個Watcher監聽,當服務端的一些事件觸發了這個Watcher,那么就會向指定客戶端發送一個事件通知來實現分布式的通知功能。

觸發事件種類很多,如:節點創建,節點刪除,節點改變,子節點改變等。

總的來說可以概括Watcher為以下三個過程:客戶端向服務端注冊Watcher、服務端事件發生觸發Watcher、客戶端回調Watcher得到觸發事件情況

???????Watch機制特點

一次性觸發?

事件發生觸發監聽,一個watcher event就會被發送到設置監聽的客戶端,這種效果是一次性的,后續再次發生同樣的事件,不會再次觸發。

事件封裝

ZooKeeper使用WatchedEvent對象來封裝服務端事件并傳遞。

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

通知狀態(keeperState)事件類型(EventType)節點路徑(path)

event異步發送 ?

watcher的通知事件從服務端發送到客戶端是異步的。

先注冊再觸發

Zookeeper中的watch機制,必須客戶端先去服務端注冊監聽,這樣事件發送才會觸發監聽,通知給客戶端。

???????通知狀態和事件類型

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

事件封裝: Watcher?得到的事件是被封裝過的, 包括三個內容 keeperState, eventType, path

KeeperState

EventType

觸發條件

說明

None

連接成功

SyncConnected

NodeCreated

Znode被創建

此時處于連接狀態

SyncConnected

NodeDeleted

Znode被刪除

此時處于連接狀態

SyncConnected

NodeDataChanged

Znode數據被改變

此時處于連接狀態

SyncConnected

NodeChildChanged

Znode的子Znode數據被改變

此時處于連接狀態

Disconnected

None

客戶端和服務端斷開連接

此時客戶端和服務器處于斷開連接狀態

Expired

None

會話超時

會收到一個SessionExpiredExceptio

AuthFailed

None

權限驗證失敗

會收到一個AuthFailedException

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

???????Shell 客戶端設置watcher

設置節點數據變動監聽:

通過另一個客戶端更改節點數據:

此時設置監聽的節點收到通知:

總結

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

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。