금요일, 1월 17, 2025
HomeLinuxzookeeper zkCli 을 이용한 znode 생성,읽기,삭제 및 쓰기

zookeeper zkCli 을 이용한 znode 생성,읽기,삭제 및 쓰기

zookeeper zkCli 을 이용한 znode 생성,읽기,삭제 및 쓰기

ZooKeeper CLI (Command Line Interface)는 개발 목적으로 ZooKeeper 앙상블과 상호 작용하는 데 사용됩니다. 

 

데이터 모델 및 계층 적 네임 스페이스

ZooKeeper가 제공하는 이름 공간은 표준 파일 시스템과 비슷합니다. 이름은 슬래시 (/)로 구분 된 경로 요소의 순서입니다. ZooKeeper의 이름 공간에있는 모든 노드는 경로로 식별됩니다.

z 노드 유형

znode를 생성하기 전에 znode의 유형에 대해 간략하게 설명하겠습니다. persistent, ephemeral, and sequential입니다

  • Persistent Znodes
    ZooKeeper의 기본 z 노드입니다. zookeeper 서버에 영구적으로 존재합니다.
  • Ephemeral Znodes
    일시적인 z 노드 (세션 z 노드라고도 함)는 임시 z 노드입니다.
    영구 z 노드와 달리 생성자 클라이언트가 ZooKeeper 서버에서 연결이 종료되자마자 파손됩니다.
  • sequential Znodes

    연속 z 노드에는 이름 끝에 숫자 순서로 10 자리 숫자가 지정됩니다. 
    client1 이 a를  만든다고 가정 해 보겠습니다 .
    sznode1. ZooKeeper 서버에서는 다음 sznode1과 같이 이름이 지정됩니다.

    sznode0000000001경우 CLIENT1이 다른 순차적 znode를 만들고,이 시퀀스에서 다음 숫자를 맺을 것입니다. 따라서 다음 순차 z 노드가 호출 <znode name>0000000002됩니다.

ZooKeeper CLI 작업을 수행하려면 먼저 ZooKeeper 서버를 시작합니다.

/zookeeper/bin/zkServer.sh start

ZooKeeper 클라이언트( zkCli.sh )를 실행하시면 됩니다.

/zookeeper/bin/zkCli.sh

ZooKeeper 클라이언트( zkCli.sh )가 시작되면 다음 작업을 수행 할 수 있습니다.

  • z 노드 생성
  • z노드 읽기
  • z노드 데이터 설정
  • z노드 삭제
  • z노드 목록

아래는 zkCli 실행후 화면입니다.

./zkCli.sh
Connecting to localhost:2181
2019-08-05 15:36:19,428 [myid:] - INFO  [main:Environment@100] - Client environment:zookeeper.version=3.4.9-1757313, built on 08/23/2016 06:50 GMT
2019-08-05 15:36:19,431 [myid:] - INFO  [main:Environment@100] - Client environment:host.name=zookeeper01
2019-08-05 15:36:19,431 [myid:] - INFO  [main:Environment@100] - Client environment:java.version=1.7.0_141
2019-08-05 15:36:19,433 [myid:] - INFO  [main:Environment@100] - Client environment:java.vendor=Oracle Corporation
2019-08-05 15:36:19,433 [myid:] - INFO  [main:Environment@100] - Client environment:java.home=/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.141.x86_64/jre
2019-08-05 15:36:19,433 [myid:] - INFO  [main:Environment@100] - Client environment:java.class.path=/sw/zookeeper/bin/../build/classes:/sw/zookeeper/bin/../build/lib/*.jar:/sw/zookeeper/bin/../lib/slf4j-log4j12-1.6.1.jar:/sw/zookeeper/bin/../lib/slf4j-api-1.6.1.jar:/sw/zookeeper/bin/../lib/netty-3.10.5.Final.jar:/sw/zookeeper/bin/../lib/log4j-1.2.16.jar:/sw/zookeeper/bin/../lib/jline-0.9.94.jar:/sw/zookeeper/bin/../zookeeper-3.4.9.jar:/sw/zookeeper/bin/../src/java/lib/*.jar:/sw/zookeeper/bin/../conf:
2019-08-05 15:36:19,434 [myid:] - INFO  [main:Environment@100] - Client environment:java.library.path=/usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib
2019-08-05 15:36:19,434 [myid:] - INFO  [main:Environment@100] - Client environment:java.io.tmpdir=/tmp
2019-08-05 15:36:19,434 [myid:] - INFO  [main:Environment@100] - Client environment:java.compiler=<NA>
2019-08-05 15:36:19,434 [myid:] - INFO  [main:Environment@100] - Client environment:os.name=Linux
2019-08-05 15:36:19,434 [myid:] - INFO  [main:Environment@100] - Client environment:os.arch=amd64
2019-08-05 15:36:19,434 [myid:] - INFO  [main:Environment@100] - Client environment:os.version=4.9.32-15.41.amzn1.x86_64
2019-08-05 15:36:19,434 [myid:] - INFO  [main:Environment@100] - Client environment:user.name=ec2-user
2019-08-05 15:36:19,434 [myid:] - INFO  [main:Environment@100] - Client environment:user.home=/home/ec2-user
2019-08-05 15:36:19,435 [myid:] - INFO  [main:Environment@100] - Client environment:user.dir=/sw/zookeeper-3.4.9/bin
2019-08-05 15:36:19,436 [myid:] - INFO  [main:ZooKeeper@438] - Initiating client connection, connectString=localhost:2181 sessionTimeout=30000 watcher=org.apache.zookeeper.ZooKeeperMain$MyWatcher@4b272332
Welcome to ZooKeeper!
2019-08-05 15:36:19,456 [myid:] - INFO  [main-SendThread(localhost:2181):ClientCnxn$SendThread@1032] - Opening socket connection to server localhost/127.0.0.1:2181. Will not attempt to authenticate using SASL (unknown error)
JLine support is enabled
2019-08-05 15:36:19,469 [myid:] - INFO  [main-SendThread(localhost:2181):ClientCnxn$SendThread@876] - Socket connection established to localhost/127.0.0.1:2181, initiating session
2019-08-05 15:36:19,476 [myid:] - INFO  [main-SendThread(localhost:2181):ClientCnxn$SendThread@1299] - Session establishment complete on server localhost/127.0.0.1:2181, sessionid = 0x16c5edd5fb40001, negotiated timeout = 30000

WATCHER::

WatchedEvent state:SyncConnected type:None path:null
[zk: localhost:2181(CONNECTED) 0] 

z 노드 생성

znode는 기본적으로 영구적입니다.

z 노드를 만들려면 경로를 지정해야합니다 .
이제 모든 znode의 경로는 항상 루트 znode로 시작합니다.
znode를 작성하기위한 명령 구문은 다음과 같습니다

create -[options] /[znode-name] [znode-data]

다음은 type별 znode를 작성하는 예제입니다.

persistent(기본값) : create /znode my_data

Ephemeral : create –e /eznode my_data

Sequential : create –s /sznode my_data


각 znode에는 하위 znode가있을 수도 있습니다.
하위  znode를 작성하기위한 명령 구문은 다음과 같습니다

create /[parent_znode]/[child_znode] [child_znode_data]

z노드 읽기

get특정 z 노드의 데이터를 가져 오는 명령을 사용합니다.

get /[znode_name]

z노드 데이터 설정

set명령을 사용하여 z 노드 데이터를 덮어 씁니다.

set /[znode_name] [new_data]

z노드 삭제

delete명령을 사용하여 z 노드 삭제합니다.

delete /[znode_name]
[zk: localhost:2181(CONNECTED) 17] ls / 
[zookeeper, znode, sznode0000000010, eznode]
[zk: localhost:2181(CONNECTED) 18] delete /znode
[zk:&nbsp;localhost:2181(CONNECTED)&nbsp;19]&nbsp;ls&nbsp;/&nbsp;
[zookeeper, sznode0000000010, eznode]

z노드 목록

ls [znode_name]
[zk: localhost:2181(CONNECTED) 19] ls /
[zookeeper, znode, sznode0000000010, eznode]
[zk: localhost:2181(CONNECTED) 8] ls /znone
[znode_sub15, znode_sub14]

 

RELATED ARTICLES

LEAVE A REPLY

Please enter your comment!
Please enter your name here

Most Popular