Zookeeper의 znode

mydailylogs
|2023. 5. 18. 01:18

Apache Zookeeper 내부에서 데이터는 hierarchical namespace로 관리되며, 이는 마치 OS의 파일 시스템 혹은 트리 데이터 구조처럼 표현된다. 이때, z nodeZookeeper에서 데이터가 저장되는 단위로서, 데이터가 저장되는 트리의 노드라고 생각할 수 있겠다.

 

znode는 두 가지 형태로 분류된다.

 

1. Persistent znode: 명시적으로 제거되기 전에는 계속해서 zookeeper의 데이터 트리에 남아있는 데이터 노드이다. 클라이언트(ex. kafka)가 연결을 종료하거나 예상치 못하게 세션이 만료되어도 남아있게 된다. 주요 사용 시나리오로는 클러스터의 구성 정보를 저장하거나, 시스템의 상태를 저장하는 등의 client와의 세션 연결에 종속되지 않는 데이터를 저장하는데에 사용한다. 예를 들어 여러 애플리케이션 서버를 Zookeeper를 통해 관리한다고 했을 때 global configuration을 저장하고 이를 모든 서버에 적용한다고 했을 때, 이를 Persistent znode에 저장하며 관리할 수 있다.

 

2. Ephemeral znode: 세션에 종속되어, znode를 만든 클라이언트와의 세션이 종료되면 삭제되는 일시적인 데이터 노드이다. Disconnect, Terminate, Session timeout 등 이유를 막론하고 세션이 종료되면 해당 노드는 사라진다. 주요 사용 시나리오로는 client의 상태를 저장하는 경우, client가 연결되는 경우 연결 정보를 담고 있다가 연결이 해제되는 경우 상태를 깔끔하게 날리는데 사용이 가능하다. 같은 맥락으로 해당 znode가 없다면 세션이 생성되지 않았음을 알 수 있다.

이는 Kafka 클러스터에서 브로커의 장애 상황을 자동으로 처리하는데 도움이 된다. 예를 들어, 브로커가 다운되거나 네트워크 연결이 끊기면 ZooKeeper 세션이 종료되고, 그 결과 해당 브로커와 관련된 ephemeral znode가 삭제되는데, 이를 통해 클러스터 상태가 실시간으로 업데이트되며, 다른 브로커들이 이 변화를 인지하고 적절히 대응할 수 있게 된다.

Kafka의 메타데이터 정보 중 일부는 persistent znode에 저장될 수 있다. 예를 들어, 토픽과 파티션 정보, 컨슈머 그룹의 offset 정보 등은 일반적으로 persistent znode에 저장되며, 이 정보는 ZooKeeper 세션이 종료되더라도 유지된다.


'Data Engineering' 카테고리의 다른 글

Kafka 환경에서의 Zookeeper의 Cluster Coordination  (0) 2023.05.18
Kafka와 Zookeeper의 상호작용  (0) 2023.05.18
Coursera 데이터 엔지니어링 강의 목록  (0) 2022.12.08
Spark  (0) 2022.11.20
로그 데이터 수집  (0) 2022.11.18