나의 잡다한 노트 및 메모

ClickHouse Keeper 본문

DB/Clickhouse

ClickHouse Keeper

peanutwalnut 2025. 1. 22. 16:48

기존에 Zookeeper가 담당하던 메타데이터 관리, 클러스터 코디네이션 기능을 ClickHouse 자체적으로 제공하기 위해 도입된 내장 분산 합의 서비스.

원래 ClickHouse에서 ReplicatedMergeTree 등 복제 기능을 사용하기 위해서는 외부에 Zookeeper 클러스터가 필요했는데, 이제는 ClickHouse Keeper를 통해 Zookeeper 없이도 비슷한 역할을 수행할 수 있게 됐다.

왜 필요한가?

ReplicatedMergeTree 엔진은 여러 Replica 노드가 동일한 테이블 파트를 비동기 복제하기 위해,

어떤 파트가 생성됐고, 어느 노드에 있으며, 어떤 파트를 아직 받지 못했는지 등 상태 정보를 공유해야 한다.

이를 관리하는 중앙 메타스토어 역할을 zookeeper가 해왔다.

즉, 테이블 복제, 파티션 병합, 노드 장애 복구, 쿼럼 연산 등을 수행할 때, 각 노드는 zookeeper를 통해 동기화한다.

ClickHouse Keeper의 역할과 기능

  1. 분산 합의(Consensus)
    • 내부적으로 Raft 혹은 유사한 합의 알고리즘을 사용하여, 다수 노드 중 과반수가 동의한 업데이트만 승인·반영.
    • 여러 노드가 동시에 수정 요청을 해도, “정해진 순서”대로 안전하게 데이터를 기록하여 일관성을 보장합니다.
  2. 메타데이터 저장
    • ReplicatedMergeTree 테이블 구성 시, “/clickhouse/tables/cluster/table_name/…” 등의 Path 구조에
    • 어떤 파트가 존재하는지, 어느 노드가 어떤 파트를 가지고 있는지 등의 정보를 Key-Value 형태로 저장.
  3. 세션, 워처, 락
    • ZooKeeper와 거의 동일한 API 개념으로, 세션(session), 워치(watch), 분산 락(distributed lock) 등을 지원.
    • ClickHouse 노드들이 Keeper에 연결해서, 특정 Path가 변경되면 이벤트를 받고, 그에 따라 파트 동기화나 장애 복구를 진행합니다.
  4. 클러스터 관리
    • 여러 개의 ClickHouse Keeper 노드를 쿼럼(3노드 이상 권장)으로 구성해, 단일 노드 장애에도 Keeper가 계속 작동하도록 **고가용성(HA)**을 갖춥니다.
    • 전체 ClickHouse 클러스터가 특정 Keeper 쿼럼에 접속하여, 복제 메타데이터를 공유합니다.

'DB > Clickhouse' 카테고리의 다른 글

ClickHouse HA  (0) 2025.01.21
ClickHouse 개요 및 추구하는 방향성 과 특징  (0) 2025.01.20