나의 잡다한 노트 및 메모
ClickHouse Keeper 본문
기존에 Zookeeper가 담당하던 메타데이터 관리, 클러스터 코디네이션 기능을 ClickHouse 자체적으로 제공하기 위해 도입된 내장 분산 합의 서비스.
원래 ClickHouse에서 ReplicatedMergeTree 등 복제 기능을 사용하기 위해서는 외부에 Zookeeper 클러스터가 필요했는데, 이제는 ClickHouse Keeper를 통해 Zookeeper 없이도 비슷한 역할을 수행할 수 있게 됐다.
왜 필요한가?
ReplicatedMergeTree 엔진은 여러 Replica 노드가 동일한 테이블 파트를 비동기 복제하기 위해,
어떤 파트가 생성됐고, 어느 노드에 있으며, 어떤 파트를 아직 받지 못했는지 등 상태 정보를 공유해야 한다.
이를 관리하는 중앙 메타스토어 역할을 zookeeper가 해왔다.
즉, 테이블 복제, 파티션 병합, 노드 장애 복구, 쿼럼 연산 등을 수행할 때, 각 노드는 zookeeper를 통해 동기화한다.
ClickHouse Keeper의 역할과 기능
- 분산 합의(Consensus)
- 내부적으로 Raft 혹은 유사한 합의 알고리즘을 사용하여, 다수 노드 중 과반수가 동의한 업데이트만 승인·반영.
- 여러 노드가 동시에 수정 요청을 해도, “정해진 순서”대로 안전하게 데이터를 기록하여 일관성을 보장합니다.
- 메타데이터 저장
- ReplicatedMergeTree 테이블 구성 시, “/clickhouse/tables/cluster/table_name/…” 등의 Path 구조에
- 어떤 파트가 존재하는지, 어느 노드가 어떤 파트를 가지고 있는지 등의 정보를 Key-Value 형태로 저장.
- 세션, 워처, 락
- ZooKeeper와 거의 동일한 API 개념으로, 세션(session), 워치(watch), 분산 락(distributed lock) 등을 지원.
- ClickHouse 노드들이 Keeper에 연결해서, 특정 Path가 변경되면 이벤트를 받고, 그에 따라 파트 동기화나 장애 복구를 진행합니다.
- 클러스터 관리
- 여러 개의 ClickHouse Keeper 노드를 쿼럼(3노드 이상 권장)으로 구성해, 단일 노드 장애에도 Keeper가 계속 작동하도록 **고가용성(HA)**을 갖춥니다.
- 전체 ClickHouse 클러스터가 특정 Keeper 쿼럼에 접속하여, 복제 메타데이터를 공유합니다.
'DB > Clickhouse' 카테고리의 다른 글
ClickHouse HA (0) | 2025.01.21 |
---|---|
ClickHouse 개요 및 추구하는 방향성 과 특징 (0) | 2025.01.20 |