Zookeeper - CLI

Giao diện dòng lệnh ZooKeeper (CLI) được sử dụng để tương tác với nhóm ZooKeeper cho mục đích phát triển. Nó rất hữu ích để gỡ lỗi và làm việc với các tùy chọn khác nhau.

Để thực hiện các hoạt động ZooKeeper CLI, trước tiên hãy bật máy chủ ZooKeeper của bạn ( “bin / zkServer.sh start” ) và sau đó, máy khách ZooKeeper ( “bin / zkCli.sh” ). Khi máy khách khởi động, bạn có thể thực hiện thao tác sau:

  • Tạo znodes
  • Lấy dữ liệu
  • Xem znode để biết các thay đổi
  • Đặt dữ liệu
  • Tạo con của một znode
  • Liệt kê các con của một znode
  • Kiểm tra trạng thái
  • Loại bỏ / Xóa một znode

Bây giờ chúng ta hãy xem từng lệnh trên với một ví dụ.

Tạo Znodes

Tạo một znode với đường dẫn đã cho. Cácflagđối số chỉ định liệu znode được tạo sẽ là tạm thời, liên tục hay tuần tự. Theo mặc định, tất cả các znodes là liên tục.

  • Ephemeral znodes (cờ: e) sẽ tự động bị xóa khi một phiên hết hạn hoặc khi máy khách ngắt kết nối.

  • Sequential znodes đảm bảo rằng đường dẫn znode sẽ là duy nhất.

  • Tập hợp ZooKeeper sẽ thêm số thứ tự cùng với phần đệm 10 chữ số vào đường dẫn znode. Ví dụ: đường dẫn znode / myapp sẽ được chuyển đổi thành / myapp0000000001 và số thứ tự tiếp theo sẽ là / myapp0000000002 . Nếu không có cờ nào được chỉ định, thì znode được coi làpersistent.

Cú pháp

create /path /data

Mẫu vật

create /FirstZnode “Myfirstzookeeper-app”

Đầu ra

[zk: localhost:2181(CONNECTED) 0] create /FirstZnode “Myfirstzookeeper-app”
Created /FirstZnode

Để tạo ra một Sequential znode, thêm vào -s flag như hình bên dưới.

Cú pháp

create -s /path /data

Mẫu vật

create -s /FirstZnode second-data

Đầu ra

[zk: localhost:2181(CONNECTED) 2] create -s /FirstZnode “second-data”
Created /FirstZnode0000000023

Để tạo một Ephemeral Znode, thêm vào -e flag như hình bên dưới.

Cú pháp

create -e /path /data

Mẫu vật

create -e /SecondZnode “Ephemeral-data”

Đầu ra

[zk: localhost:2181(CONNECTED) 2] create -e /SecondZnode “Ephemeral-data”
Created /SecondZnode

Hãy nhớ rằng khi mất kết nối máy khách, znode tạm thời sẽ bị xóa. Bạn có thể thử nó bằng cách thoát khỏi ZooKeeper CLI và sau đó mở lại CLI.

Lấy dữ liệu

Nó trả về dữ liệu liên quan của znode và siêu dữ liệu của znode được chỉ định. Bạn sẽ nhận được thông tin như thời điểm dữ liệu được sửa đổi lần cuối, nơi nó được sửa đổi và thông tin về dữ liệu. CLI này cũng được sử dụng để chỉ định đồng hồ hiển thị thông báo về dữ liệu.

Cú pháp

get /path

Mẫu vật

get /FirstZnode

Đầu ra

[zk: localhost:2181(CONNECTED) 1] get /FirstZnode
“Myfirstzookeeper-app”
cZxid = 0x7f
ctime = Tue Sep 29 16:15:47 IST 2015
mZxid = 0x7f
mtime = Tue Sep 29 16:15:47 IST 2015
pZxid = 0x7f
cversion = 0
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 22
numChildren = 0

Để truy cập một znode tuần tự, bạn phải nhập đường dẫn đầy đủ của znode.

Mẫu vật

get /FirstZnode0000000023

Đầu ra

[zk: localhost:2181(CONNECTED) 1] get /FirstZnode0000000023
“Second-data”
cZxid = 0x80
ctime = Tue Sep 29 16:25:47 IST 2015
mZxid = 0x80
mtime = Tue Sep 29 16:25:47 IST 2015
pZxid = 0x80
cversion = 0
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 13
numChildren = 0

Đồng hồ đeo tay

Đồng hồ hiển thị thông báo khi dữ liệu znode hoặc con của znode được chỉ định thay đổi. Bạn có thể đặt mộtwatch chỉ trong get chỉ huy.

Cú pháp

get /path [watch] 1

Mẫu vật

get /FirstZnode 1

Đầu ra

[zk: localhost:2181(CONNECTED) 1] get /FirstZnode 1
“Myfirstzookeeper-app”
cZxid = 0x7f
ctime = Tue Sep 29 16:15:47 IST 2015
mZxid = 0x7f
mtime = Tue Sep 29 16:15:47 IST 2015
pZxid = 0x7f
cversion = 0
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 22
numChildren = 0

Đầu ra tương tự như bình thường getnhưng nó sẽ đợi các thay đổi znode trong nền. <Bắt đầu tại đây>

Đặt dữ liệu

Đặt dữ liệu của znode được chỉ định. Sau khi hoàn thành thao tác đặt này, bạn có thể kiểm tra dữ liệu bằng cách sử dụngget Lệnh CLI.

Cú pháp

set /path /data

Mẫu vật

set /SecondZnode Data-updated

Đầu ra

[zk: localhost:2181(CONNECTED) 1] get /SecondZnode “Data-updated”
cZxid = 0x82
ctime = Tue Sep 29 16:29:50 IST 2015
mZxid = 0x83
mtime = Tue Sep 29 16:29:50 IST 2015
pZxid = 0x82
cversion = 0
dataVersion = 1
aclVersion = 0
ephemeralOwner = 0x15018b47db00000
dataLength = 14
numChildren = 0

Nếu bạn chỉ định watch tùy chọn trong get lệnh (như trong lệnh trước), sau đó đầu ra sẽ tương tự như hình dưới đây:

Đầu ra

[zk: localhost:2181(CONNECTED) 1] get /FirstZnode “Mysecondzookeeper-app”

WATCHER: :

WatchedEvent state:SyncConnected type:NodeDataChanged path:/FirstZnode
cZxid = 0x7f
ctime = Tue Sep 29 16:15:47 IST 2015
mZxid = 0x84
mtime = Tue Sep 29 17:14:47 IST 2015
pZxid = 0x7f
cversion = 0
dataVersion = 1
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 23
numChildren = 0

Tạo con / znode con

Tạo con tương tự như tạo znodes mới. Sự khác biệt duy nhất là đường dẫn của znode con cũng sẽ có đường dẫn cha.

Cú pháp

create /parent/path/subnode/path /data

Mẫu vật

create /FirstZnode/Child1 firstchildren

Đầu ra

[zk: localhost:2181(CONNECTED) 16] create /FirstZnode/Child1 “firstchildren”
created /FirstZnode/Child1
[zk: localhost:2181(CONNECTED) 17] create /FirstZnode/Child2 “secondchildren”
created /FirstZnode/Child2

Liệt kê trẻ em

Lệnh này được sử dụng để liệt kê và hiển thị children của một znode.

Cú pháp

ls /path

Mẫu vật

ls /MyFirstZnode

Đầu ra

[zk: localhost:2181(CONNECTED) 2] ls /MyFirstZnode
[mysecondsubnode, myfirstsubnode]

Kiểm tra trạng thái

Statusmô tả siêu dữ liệu của một znode được chỉ định. Nó chứa các chi tiết như Dấu thời gian, Số phiên bản, ACL, Độ dài dữ liệu và Znode trẻ em.

Cú pháp

stat /path

Mẫu vật

stat /FirstZnode

Đầu ra

[zk: localhost:2181(CONNECTED) 1] stat /FirstZnode
cZxid = 0x7f
ctime = Tue Sep 29 16:15:47 IST 2015
mZxid = 0x7f
mtime = Tue Sep 29 17:14:24 IST 2015
pZxid = 0x7f
cversion = 0
dataVersion = 1
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 23
numChildren = 0

Loại bỏ một Znode

Loại bỏ một znode được chỉ định và đệ quy tất cả các con của nó. Điều này chỉ xảy ra nếu có sẵn một znode như vậy.

Cú pháp

rmr /path

Mẫu vật

rmr /FirstZnode

Đầu ra

[zk: localhost:2181(CONNECTED) 10] rmr /FirstZnode
[zk: localhost:2181(CONNECTED) 11] get /FirstZnode
Node does not exist: /FirstZnode

Xóa bỏ (delete /path) lệnh tương tự như remove lệnh, ngoại trừ thực tế là nó chỉ hoạt động trên các znodes không có con.