Programming Insight 2015. 3. 18. 19:31

Kafka 클러스터의 모든 분산 처리는 Zookeeper를 매개로 이루어 지기 때문에, Kafka가 사용하는 Zookeeper 트리의 구조를 파악하면 Kafka 클러스터의 동작 방식을 이해하는데 큰 도움이 된다. 아래의 그림은 Kafka가 사용하는 Zookeeper 트리의 주요 노드를 정리해 놓은 것이다. 좀 더 상세한 정보는 Kafka Wiki의 Kafka data structures in Zookeeper를 참조하길 바란다.


Zookeeper CLI로 Zookeeper 트리 탐색하기

Zookeeper 트리는 파일 시스템의 디렉토리 구조와 비슷하기 때문에 Zookeeper 패키지에 포함되어 있는 zkCli.sh라는 CLI 툴을 사용하여 디렉토리를 탐색하듯이 ls 명령어를 통해 Zookeeper 트리를 탐색할 수 있다. (Kafka 패키지에도 이와 비슷한 zookeeper-shell.sh가 들어있는데 자동 완성이나 히스토리 기능이 제공되지 않으므로 이를 제공하는 zkCli.sh를 사용하는 것을 권장한다.)


우선 아래의 커맨드를 통해 Zookeeper에 접속한다.

bin/zkCli.sh -server kafka-test-001.epicdevs.com:2181

Zookeeper에 접속하게 되면 여러가지 명령어를 통해 트리 탐색 및 조작이 가능하다. help 명령어를 사용하면 전체 명령어 리스트를 확인할 수 있다.

간단하게는 ls 명령어를 사용하면 트리의 노드를 탐색할 수 있고, get 명령어를 사용하면 노드에 저장된 값을 읽어올 수 있다(위 그림의 사각형 노드).


예를 들어

ls /brokers/ids

를 입력하면

[3, 2, 1]

라는 broker ID에 해당하는 하위 노드 리스트가 출력되고


get /consumers/test-group/offsets/test/0

를 입력하면

2574

라는 offset 값이 출력된다.


zkCli.sh에 대한 상세한 가이드는 ZooKeeper Getting Started Guide를 참조하길 바란다.


참고자료


Comment 2