ZooKeeperシリーズ(2):ZooKeeperコマンドラインツールzkCli.sh
7474 ワード
ZooKeeperシリーズの記事:https://www.cnblogs.com/f-ck-need-u/p/7576137.html#zk
1.概要
ZooKeeperは、ZooKeeperインストールディレクトリのbinディレクトリの下にある非常に簡単なコマンドラインクライアントzkCliを提供します.
まず、すでに起動しているZooKeeperインスタンスに接続します.例:
接続中に大量の情報が出力されます.接続が成功すると、ZooKeeperのインタラクティブモードに入ります.
たとえば、helpを入力してヘルプ情報を出力します.
ここで、インタラクティブコマンドプロンプトには、上で順次操作を行った後、0から1になるなど、増加する数字があります.この数字はコマンドの履歴番号を表します.
zkCliを用いることもできる.shの非インタラクティブモードは、次のフォーマットで使い捨て操作を実行します.
たとえばhelpコマンド:
インタラクティブ環境では、TABキーを使用して補完したり、使用可能なコマンド、パスをリストしたりできます.bashのようです.
ZooKeeperのコマンドは簡単ではありません.大きくいくつかのタイプに分けられます.
これはコマンドの機能タイプにすぎず、コマンドであることを意味しないことに注意してください.
2.znodeの作成
-s:ノードパスを0で埋めるシリアル番号付きノードを作成します.-e:一時ノードが作成されます.path:znodeのパス、ZooKeeperには相対パスがなく、すべてのパスは'/'で始まる必要があります.data:znodeが携帯するデータ.acl:このノードのACL.
たとえば、znodeノードを作成します.
このうち
サブノードを作成するには
シーケンス番号付きznodeを作成するには:
なお、シーケンス番号付きznodeが作成されると、以降はシーケンス番号付きパス
一時znodeを作成するには:
一時znodeはセッション終了時に自動的に削除されるため、一時ノードにサブノードを作成できません.また、テンポラリノードはセッションに属しますが、すべてのクライアントが表示、参照できます.
3.ノードのデータとステータス情報の表示
ノードデータ、ステータス情報を取得するには、次の手順に従います.
ノードのステータス情報のみを取得する場合はstatコマンドを使用します.
4.サブノードの表示
5.ノードデータの変更
6.ノードの削除
7.historyとredo
13番の履歴コマンドを再実行します.
8.connectとclose
接続コマンドは、他のZooKeeperサーバに接続するために使用され、closeは現在の接続を閉じるために使用されます.sshが他のサーバに、そしてexitのように.
他のサーバに接続すると、現在の接続が切断され、現在のセッションの一時znodeが削除されることに注意してください.以下はconnectが他のサーバに接続されたときのzookeeperです.outの関連内容:
したがって、上でcloseを実行すると、前の接続に戻ることはなく、手動で再接続する必要があります.
9.quit
1.概要
ZooKeeperは、ZooKeeperインストールディレクトリのbinディレクトリの下にある非常に簡単なコマンドラインクライアントzkCliを提供します.
[root@s1 zk]# ls /usr/local/zookeeper/bin/
zkCleanup.sh zkCli.sh zkEnv.sh zkServer.sh
まず、すでに起動しているZooKeeperインスタンスに接続します.例:
zkCli.sh -server localhost:2181
接続中に大量の情報が出力されます.接続が成功すると、ZooKeeperのインタラクティブモードに入ります.
WatchedEvent state:SyncConnected type:None path:null
[zk: localhost:2181(CONNECTED) 0] # ZooKeeper
たとえば、helpを入力してヘルプ情報を出力します.
[zk: localhost: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
[zk: localhost:2181(CONNECTED) 1]
ここで、インタラクティブコマンドプロンプトには、上で順次操作を行った後、0から1になるなど、増加する数字があります.この数字はコマンドの履歴番号を表します.
zkCliを用いることもできる.shの非インタラクティブモードは、次のフォーマットで使い捨て操作を実行します.
zkCli.sh -server IP:PORT COMMAND
たとえばhelpコマンド:
zkCli.sh -server localhost:2181 help
インタラクティブ環境では、TABキーを使用して補完したり、使用可能なコマンド、パスをリストしたりできます.bashのようです.
ZooKeeperのコマンドは簡単ではありません.大きくいくつかのタイプに分けられます.
create
:ツリー内のある場所にノードを作成します.delete
:ノードを削除します.exists
:ノードが存在するかどうかをテストします.get data
:ノードデータを読み出します.set data
:ノードにデータを書き込みます.get children
:あるノードのサブノードリストを取得します.sync
:伝播するデータを待つ.これはコマンドの機能タイプにすぎず、コマンドであることを意味しないことに注意してください.
2.znodeの作成
create [-s] [-e] path data acl
-s:ノードパスを0で埋めるシリアル番号付きノードを作成します.-e:一時ノードが作成されます.path:znodeのパス、ZooKeeperには相対パスがなく、すべてのパスは'/'で始まる必要があります.data:znodeが携帯するデータ.acl:このノードのACL.
たとえば、znodeノードを作成します.
[zk: localhost:2181(CONNECTED) 1] create /zk_test mydata1
Created /zk_test
このうち
/zk_test
はノード名であり、mydata1
はそのノードが携帯するデータである.サブノードを作成するには
[zk: localhost:2181(CONNECTED) 2] create /zk_test/child_node1 "mydata2"
Created /zk_test/child_node1
シーケンス番号付きznodeを作成するには:
[zk: localhost:2181(CONNECTED) 31] create -s /test1 222
Created /test10000000003
なお、シーケンス番号付きznodeが作成されると、以降はシーケンス番号付きパス
/test10000000003
のみがこのznodeを参照することができ、/test1
では参照できない.一時znodeを作成するには:
[zk: localhost:2181(CONNECTED) 32] create -e /test2 333
Created /test2
一時znodeはセッション終了時に自動的に削除されるため、一時ノードにサブノードを作成できません.また、テンポラリノードはセッションに属しますが、すべてのクライアントが表示、参照できます.
3.ノードのデータとステータス情報の表示
ノードデータ、ステータス情報を取得するには、次の手順に従います.
[zk: localhost:2181(CONNECTED) 6] get /zk_test
mydata1 #
cZxid = 0x4
ctime = Wed Jun 27 02:05:44 CST 2018
mZxid = 0x4
mtime = Wed Jun 27 02:05:44 CST 2018
pZxid = 0x5
cversion = 1
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 7
numChildren = 1
[zk: localhost:2181(CONNECTED) 7] get /zk_test/child_node1
mydata2
cZxid = 0x5
ctime = Wed Jun 27 02:29:12 CST 2018
mZxid = 0x5
mtime = Wed Jun 27 02:29:12 CST 2018
pZxid = 0x5
cversion = 0
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 7
numChildren = 0
ノードのステータス情報のみを取得する場合はstatコマンドを使用します.
[zk: localhost:2181(CONNECTED) 8] stat /zk_test
cZxid = 0x4
ctime = Wed Jun 27 02:05:44 CST 2018
mZxid = 0x4
mtime = Wed Jun 27 02:05:44 CST 2018
pZxid = 0x5
cversion = 1
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 7
numChildren = 1
ls2
命令はls
とstat
の2つの命令の結合体であり、所与のノードの下のサブノードと所与のノードの状態情報を取得することができる.[zk: localhost:2181(CONNECTED) 12] ls2 /
[zookeeper, zk_test] #
cZxid = 0x0
ctime = Thu Jan 01 08:00:00 CST 1970
mZxid = 0x0
mtime = Thu Jan 01 08:00:00 CST 1970
pZxid = 0x4
cversion = 0
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 0
numChildren = 2 #
4.サブノードの表示
ls
コマンドは、ノードの下にあるサブノードを表示します.再帰的に取得されないことに注意してください.[zk: localhost:2181(CONNECTED) 3] ls /
[zookeeper, zk_test]
[zk: localhost:2181(CONNECTED) 4] ls /zk_test
[child_node1]
5.ノードデータの変更
set
コマンドは、ノードを変更するために使用されます.[zk: localhost:2181(CONNECTED) 13] set /zk_test "mydata2"
cZxid = 0x4
ctime = Wed Jun 27 02:05:44 CST 2018
mZxid = 0x9
mtime = Wed Jun 27 02:42:45 CST 2018
pZxid = 0x7
cversion = 2
dataVersion = 1
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 7
numChildren = 0
6.ノードの削除
delete
は、ノードを削除することができる.再帰的に削除されないので、サブノードを含むノードを削除するには、すべてのサブノードを削除する必要があります.[zk: localhost:2181(CONNECTED) 21] delete /zk_test
Node not empty: /zk_test
[zk: localhost:2181(CONNECTED) 22] delete /zk_test/child_node1
rmr
コマンドは、ノードを再帰的に削除できるため、ノード内のすべてのサブノードも削除されます.[zk: localhost:2181(CONNECTED) 36] create /test/hello 2323
Created /test/hello
[zk: localhost:2181(CONNECTED) 37] create /test/hello/hello1 23233
Created /test/hello/hello1
[zk: localhost:2181(CONNECTED) 38] rmr /test
[zk: localhost:2181(CONNECTED) 39] ls /
[test2, mynode, zookeeper, test10000000003, zk_test]
7.historyとredo
history
コマンドは、最近の操作の10のコマンド履歴をリストし、各履歴コマンドの番号を与えることができる.redo
コマンドは、履歴コマンドの番号に従ってこれらのコマンドを再呼び出すことができる.[zk: localhost:2181(CONNECTED) 18] history
8 - stat /zk_test
9 - get /
10 - get child /
11 - get children /
12 - ls2 /
13 - ls /
14 - ls2 /zk_test
15 - get /
16 - help
17 - ls /zk
18 - history
13番の履歴コマンドを再実行します.
[zk: localhost:2181(CONNECTED) 27] redo 13
[zookeeper, zk_test]
8.connectとclose
接続コマンドは、他のZooKeeperサーバに接続するために使用され、closeは現在の接続を閉じるために使用されます.sshが他のサーバに、そしてexitのように.
# ZooKeeper shell :
[zk: localhost:2181(CONNECTED) 40] connect 192.168.100.21:2181
[zk: 192.168.100.21:2181(CONNECTED) 41] close
[zk: 192.168.100.21:2181(CLOSED) 43]
他のサーバに接続すると、現在の接続が切断され、現在のセッションの一時znodeが削除されることに注意してください.以下はconnectが他のサーバに接続されたときのzookeeperです.outの関連内容:
2018-06-27 04:36:16,734 [myid:] - INFO [ProcessThread(sid:0 cport:2181)::PrepRequestProcessor@487] - Processed session termination for sessionid: 0x10007ee8bb20003
2018-06-27 04:36:16,737 [myid:] - INFO [NIOServerCxn.Factory:0.0.0.0/0.0.0.0:2181:NIOServerCnxn@1040] - Closed socket connection for client /0:0:0:0:0:0:0:1:34376 which had sessionid 0x10007ee8bb20003
したがって、上でcloseを実行すると、前の接続に戻ることはなく、手動で再接続する必要があります.
[zk: 192.168.100.21:2181(CONNECTED) 41] close
[zk: 192.168.100.21:2181(CLOSED) 43] ls /
Not connected
[zk: 192.168.100.21:2181(CLOSED) 44] connect localhost:2181
[zk: localhost:2181(CONNECTED) 45] ls /
[mynode, zookeeper, test10000000003, zk_test]
9.quit
quit
コマンドZooKeeperのインタラクティブコマンドラインを終了します.[zk: localhost:2181(CONNECTED) 29] quit
Quitting...