ZooKeeper 명령줄 인터페이스에 대해 알아봅니다.

 

 

zookeeper 접속

아래 명령어로 로컬 ZooKeeper 서버에 접속합니다.

bin/zkCli.sh -server 127.0.0.1:2181

아래와 같이 CONNECTED 프롬프트가 나오면 정상입니다.

Connecting to 127.0.0.1:2181
...
...
[zk: 127.0.0.1:2181(CONNECTED) 0]

혹시, 

WATCHER::

WatchedEvent state:SyncConnected type:None path:null

메시지 상태에 멈추어 있으면 엔터키를 칩니다.

 

위 프롬프트에서 help 명령어를 입력하고 엔터를 칩니다. 그럼 아래와 같이 표시됩니다.

[zk: 127.0.0.1:2181(CONNECTED) 0] help
ZooKeeper -server host:port cmd args
    stat path [watch]
    set path data [version]
...  ...
    close
    connect host:port

 

ls 명령으로 전체 znode를 확인할 수 있습니다.

[zk: 127.0.0.1:2181(CONNECTED) 21] ls /
[admin, brokers, cluster, config, consumers,... ... zookeeper]

 

1. Create Znodes

주어진 경로로 znode를 생성합니다. znode 명은 대소문자를 구분합니다.

플래그는 생성할 Znode가 임시(flag:e), 영구 또는 순차(flag:e)인지를 지정합니다. 모든 znode는 기본적으로 영구입니다.
임시 znode(flag:e)는 세션이 만료되거나 클라이언트 연결이 끊어지면 자동으로 삭제됩니다. 
순차 znode는 znode 경로에 10자리로  시퀀스 번호를 추가합니다. 예를 들어, znode 경로 /myapp를 순차노드로 생성하게 되면  /myapp0000000001로 변환되되어 생성됩니다.

플래그가 지정되지 않은 znode는 영구로 간주합니다.

flag

-s : 순차 znode

-e : 임시 znode

참고로 한글 znode도 생성할 수 있습니다. data는 공백이 있는 경우 " " 로 묶어줍니다.

 

1.1 영구 znode를 생성합니다.

a. Syntax(문법) : create /path data

b. Sample(예제)

create /zk_test my_data를 실행하여 새 znode를 만듭니다. 그러면 새 znode가 생성되고 "my_data" 문자열이 노드와 연결됩니다.

[zk: 127.0.0.1:2181(CONNECTED) 22] create /zk_test my_data
Created /zk_test
 

1.2 순차 znode를 생성합니다. 순차 znode를 생성하기 위해 -s 플래그를 추가합니다.

a. Syntax : create -s /path data

b. Sample

[zk: 127.0.0.1:2181(CONNECTED) 6] create -s /FirstZnode second-data
Created /FirstZnode0000000041
 
1.3 임시 znode를 생성합니다. -e 플래그를 추가하여 임시 Znode를 생성합니다.

a. Syntax : create -e /path data

b. 예제

[zk: 127.0.0.1:2181(CONNECTED) 7] create -e /SecondZnode "Ephemeral-data"
Created /SecondZnode

클라이언트 연결이 끊어지면 임시 znode가 삭제되는지 확인하려면 ZooKeeper CLI를 종료한 다음 CLI를 다시 열면 확인할 수 있습니다.

 

 

2. Get Data

znode의 관련 데이터와 지정된 znode의 메타데이터를 가져오기 위해 이 명령어를 사용합니다. 데이터가 마지막으로 수정된 시간, 수정된 위치 및 데이터에 대한 모든 정보와 같은 정보를 얻을 수 있습니다.
이 명령으로 데이터에 대한 알림을 표시하도록 합니다.

 

2.1 영구노드 조회

a. Syntax : get -s /path

b. Sample

get -s /FirstZnode 명령어로 /FirstZnode 에 있는 데이터에 대한 정보를 보여줍니다.

[zk: 127.0.0.1:2181(CONNECTED) 14] get -s /FirstZnode
Myfirstzookeeper-app
cZxid = 0x877
ctime = Sun Jan 09 21:23:53 KST 2022
mZxid = 0x877
mtime = Sun Jan 09 21:23:53 KST 2022
pZxid = 0x877
cversion = 0
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 20
numChildren = 0

 

2.2 순차노드 조회
순차노드를 조회하기 위해서는 znode의 전체경로(full path)를 입력해야 합니다.

a. Syntax : get -s /path

b. Sample

get -s /FirstZnode0000000041 명령어로  /FirstZnode0000000041 에 있는 데이터에 대한 정보를 보여줍니다.

[zk: 127.0.0.1:2181(CONNECTED) 20] get -s /FirstZnode0000000041
second-data
cZxid = 0x878
ctime = Sun Jan 09 21:24:52 KST 2022
mZxid = 0x878
mtime = Sun Jan 09 21:24:52 KST 2022
pZxid = 0x878
cversion = 0
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 11
numChildren = 0
 
2.3 임시노드 조회
임시노드만을 조회합니다.

a. Syntax : getEphemerals -s /path

b. Sample

getEphemerals  / 명령어로  임시노드를 조회합니다.

[zk: 127.0.0.1:2181(CONNECTED) 22] getEphemerals /
[/SecondZnode]
 

3. Watch

지정된 znode 또는 znode의 자식 데이터가 변경되면 "Watches" 오퍼레이터가 알림을 표시합니다. get 명령에서만 감시를 설정할 수 있습니다. -w 옵션입니다.

a. Syntax : get -w /path

b. Sample

[zk: 127.0.0.1:2181(CONNECTED) 2] get -w /FirstZnode
Myfirstzookeeper-app

watch가 설정되면 znode 변경 시 get 으로 data를 가져오면 아래와 같은 메시지가 출력됩니다.

 

WATCHER::
WatchedEvent state:SyncConnected type:NodeDataChanged path:/zk_test

 

4. Set Data

이 명령은 znode의 데이터를 설정합니다. 이 ZooKeeper 설정 작업을 마치면 ZooKeeper에서 get CLI 명령을 사용하여 데이터를 확인할 수 있습니다.

 

a. Syntax : set /path /data

b. Sample

다음과 같이 set 명령을 실행하여 zk_test와 관련된 데이터를 변경합니다. get 으로 변경된 데이터를 확인합니다.

[zk: 127.0.0.1:2181(CONNECTED) 18] set /zk_test junk

[zk: 127.0.0.1:2181(CONNECTED) 34] get -s /zk_test
junk
cZxid = 0x890
ctime = Sun Jan 09 23:06:22 KST 2022
mZxid = 0x891
mtime = Sun Jan 09 23:06:24 KST 2022
pZxid = 0x890
cversion = 0
dataVersion = 1
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 4
numChildren = 0

set data 명령 시 znode에 watch 옵션이 설정되어 있으면 아래와 같이 메시지가 같이 출력됩니다.

WATCHER::
WatchedEvent state:SyncConnected type:NodeDataChanged path:/zk_test
 
 

5. 자식 znode 생성(subznode or children znode)

자식 znode를 만드는 것은 새 znode를 만드는 것과 같습니다. 둘의 차이점은 자식 znode의 경로에 부모 경로가 있다는 것입니다.


a. Syntax : create /parent/subnode data

b. Sample : create /FirstZnode/Child1 firstchildren 명령어로 자식 노드를 생성합니다.

[zk: 127.0.0.1:2181(CONNECTED) 61] create /FirstZnode/Child1 "firstchildren"
Created /FirstZnode/Child1
[zk: 127.0.0.1:2181(CONNECTED) 62] create /FirstZnode/Child2 "secondchildren"
Created /FirstZnode/Child2
 
 

6. 노드 조회

ls 명령어로 znode를 조회합니다.

 

a. Syntax : ls /path

b. Sample

[zk: 127.0.0.1:2181(CONNECTED) 63] ls /FirstZnode
[Child1, Child2]
 
 

7. 상태 체크

Status는 지정된 znode의 메타데이터를 조회합니다. 타임스탬프, 버전 번호, ACL, 데이터 길이 및 하위 znode와 같은 여러 세부 정보를 보여줍니다.


a. Syntax : stat /path

b. Sample

stat /FirstZnode 명령어로 /FirstZnode 에 대한 세부 정보를 조회합니다.

[zk: 127.0.0.1:2181(CONNECTED) 64] stat /FirstZnode
cZxid = 0x89e
ctime = Sun Jan 09 23:32:55 KST 2022
mZxid = 0x89e
mtime = Sun Jan 09 23:32:55 KST 2022
pZxid = 0x8a0
cversion = 2
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 0
numChildren = 2
 
 

8. Znode 삭제

delete 명령은 지정된 znode를 제거합니다. 자식 znode 가 있는 경우에는 삭제되지 않습니다.
deleteall 명령은 지정된 znode와 모든 하위 노드를 제거합니다. 

a. Syntax : delete /path

b. Sample

delete /zk_test 명령어로 /zk_test znode를 삭제합니다.
[zk: 127.0.0.1:2181(CONNECTED) 49] delete /zk_test
[zk: 127.0.0.1:2181(CONNECTED) 51] get /zk_test
Node does not exist: /zk_test

단, delete 명령은 자식이 없는 znode에서만 작동합니다. 자식이 있는 znode를 삭제하려면 deleteall 명령을 사용합니다.

[zk: 127.0.0.1:2181(CONNECTED) 56] delete /FirstZnode
Node not empty: /FirstZnode

 

자식이 있는 znode를 삭제하려면 deleteall 명령을 사용합니다.

[zk: 127.0.0.1:2181(CONNECTED) 56] deleteall /FirstZnode
[zk: 127.0.0.1:2181(CONNECTED) 58] get /FirstZnode
Node does not exist: /FirstZnode

 

'Apache Kafka' 카테고리의 다른 글

카프카 Connect  (0) 2022.01.12
AWS MSK  (0) 2022.01.11
아파치 주키퍼 설치 및 실행  (0) 2022.01.09
주키퍼 Cluster 구성  (0) 2022.01.08
아파치 주키퍼란  (0) 2022.01.08

+ Recent posts