Ken
Data Lake Catalog 연동은 현대의 모든 데이터 분석 기술에 요구되는 사항입니다. ClickHouse도 2025년 이후 지속적인 지원을 강화하고 최적화를 수행하고 있습니다. 그에 따라, 25.10, 25.11을 기준으로 현황을 확인해보겠습니다.
- 1. Data Lake Catalog의 배경
- 1.1 Lakehouse 아키텍처의 부상
- 1.2 주요 Data Catalog 비교
- 2. ClickHouse의 Catalog 연동
- 2.1 기존 방식의 한계
- 2.2 DataLakeCatalog 엔진
- 2.3 주요 유즈케이스
- 3. 테스트 환경 및 결과
- 3.1 테스트 환경
- 3.2 Catalog별 연결 예시
- 3.3 공통 테스트 항목
- 3.4 테스트 결과
- 4. 향후 로드맵
- 4.1 2025년 ClickHouse Data Lake 로드맵
- 4.2 알려진 제한사항
- 5. 결론
- 추가: ClickHouse Cloud 25.10 Unity Catalog + Delta Lake
- 주의사항
- Append 작업 시 설정 필요
- 와일드카드 쿼리 주의
- 프로덕션 환경 권장사항
1. Data Lake Catalog의 배경
1.1 Lakehouse 아키텍처의 부상
2024년은 Apache Iceberg와 Lakehouse 패러다임이 업계 표준으로 자리잡은 해였습니다. Databricks의 Tabular 인수, AWS S3 Tables 발표, Snowflake의 Polaris 개발 등 주요 벤더들이 Open Table Format에 대규모 투자를 진행했습니다.
Data Catalog은 이러한 Lakehouse 아키텍처의 핵심 구성요소로, 테이블 상태 추적, 스키마 진화 관리, Time Travel, 그리고 다양한 쿼리 엔진 간의 통합 인터페이스를 제공합니다.
1.2 주요 Data Catalog 비교
특성 | Nessie | Hive Metastore | Iceberg REST | Polaris | Unity Catalog |
타입 | Git-like | Traditional | REST API | Iceberg-native | Multi-format |
버전 관리 | Git-style 브랜칭 | 미지원 | 제한적 | 지원 | 지원 |
Time Travel | 지원 | 미지원 | 지원 | 지원 | 지원 |
ACID 지원 | 완전 | 제한적 | 완전 | 완전 | 완전 |
최적 사용 | 버전 관리 중심 | Legacy 호환 | 표준 REST | Iceberg 전문 | Databricks 호환 |
2. ClickHouse의 Catalog 연동
2.1 기존 방식의 한계
기존에는 iceberg(), deltaLake() 테이블 함수에 전체 경로를 명시해야 했습니다:
SELECT * FROM iceberg('s3://bucket/warehouse/db/table/')
이 방식은 테이블 자동 발견 불가, 스키마 수동 동기화, 거버넌스 부재 등의 한계가 있었습니다.
2.2 DataLakeCatalog 엔진
ClickHouse 25.8부터 도입된 DataLakeCatalog 데이터베이스 엔진은 Catalog 메타데이터를 쿼리 가능한 테이블로 자동 변환합니다:
SET allow_experimental_database_iceberg = 1;
CREATE DATABASE datalake
ENGINE = DataLakeCatalog('http://rest-catalog:8181/v1')
SETTINGS
catalog_type = 'rest',
warehouse = 'iceberg',
storage_endpoint = 'http://minio:9000/warehouse';
SHOW TABLES FROM datalake;
2.3 주요 유즈케이스
- Hot/Cold 티어링: MergeTree(실시간) + Iceberg/Delta Lake(히스토리컬) 통합 쿼리
- 멀티 엔진 협업: Spark/Flink ETL → ClickHouse 분석, 동일 Catalog 공유
- Federated Query: 여러 Catalog 데이터를 단일 쿼리로 조회
3. 테스트 환경 및 결과
3.1 테스트 환경
Docker Compose 기반 로컬 환경에서 5가지 Catalog를 검증했습니다.
구성 요소:
- ClickHouse 25.11.2.24
- MinIO (S3 호환 스토리지)
- 5개 Catalog: Nessie, Hive Metastore, Iceberg REST, Polaris, Unity Catalog
포트 구성:
MinIO API/Console: 19000 / 19001
Nessie: 19120
Hive Metastore: 9083
Iceberg REST: 8181
Polaris API/Mgmt: 8182 / 8183
Unity Catalog: 8080
3.2 Catalog별 연결 예시
3.3 공통 테스트 항목
모든 Catalog에 대해 다음 10개 항목을 테스트했습니다:
# | 테스트 항목 | 설명 |
1 | Basic Connectivity | Catalog API 연결 확인 |
2 | Create Table | 소스 테이블 생성 (5건) |
3 | Write to MinIO (Parquet) | S3 호환 스토리지에 Parquet 쓰기 |
4 | Read from MinIO | Parquet 데이터 읽기 및 집계 |
5 | Append New Data | 데이터 추가 (2건) |
6 | Query with Filters | 필터 조건 쿼리 |
7 | Schema Validation | 스키마 자동 추론 검증 |
8 | Performance Test | 10,000건 대용량 Read/Write |
9 | Data Type Compatibility | Int8~Int64, Float, String, Date, DateTime, Boolean |
10 | Cleanup | 테스트 리소스 정리 |
3.4 테스트 결과
2025년 12월 13일 기준, ClickHouse 25.11.2.24
Catalog | Connectivity | Read/Write | Performance | 종합 |
Nessie | ✅ PASSED | ✅ PASSED | ✅ PASSED | ✅ |
Hive Metastore | ✅ PASSED | ✅ PASSED | ✅ PASSED | ✅ |
Iceberg REST | ✅ PASSED | ✅ PASSED | ✅ PASSED | ✅ |
Polaris | ✅ PASSED | ✅ PASSED | ✅ PASSED | ✅ |
Unity Catalog | ✅ PASSED | ✅ PASSED | ✅ PASSED | ✅ |
Delta Lake 지원: Unity Catalog를 통한 Delta Lake 테이블의 Read/Write 작업도 정상 동작을 확인했습니다. Parquet 기반 Delta Lake 포맷의 쓰기, 읽기, Append, 필터 쿼리 모두 문제없이 작동합니다.
성능 참고 (M1 Mac, 16GB RAM):
- 5건 Write/Read: <1초
- 10,000건 Write: 2-3초
- 10,000건 Read + 집계: 1-2초
4. 향후 로드맵
4.1 2025년 ClickHouse Data Lake 로드맵
1. Iceberg 지원 강화
- Position Delete, Equality Delete 완전 지원
- Iceberg v3 기능 지원
- 메타데이터 캐싱 레이어 도입
2. Delta Lake 지원 강화
- Delta Rust Kernel 통합: 현재 Java Kernel 의존성을 Rust로 전환하여 성능 및 안정성 향상
- 네이티브 Delta Lake Write: 현재는 Parquet 포맷으로 S3에 직접 쓰기 방식이며, 향후 Delta Lake 트랜잭션 로그(
_delta_log)를 직접 관리하는 네이티브 Write 지원 예정 - UPDATE/DELETE 지원: 현재 INSERT(Append) 중심에서 전체 DML 지원으로 확장
3. 신규 Catalog 통합
- Microsoft OneLake (2025년 11월 발표)
- Lakekeeper (Rust 기반 고성능 REST Catalog)
4.2 알려진 제한사항
- GCS 지원: DataLakeCatalog의 Google Cloud Storage 지원 미구현 (25.6 기준)
- Timezone: Glue Catalog에서 DateTime 컬럼의 Timezone 정보 손실 가능
- 성능 격차: 네이티브 MergeTree 대비 Data Lake 쿼리 성능 격차 존재 (개선 진행 중)
5. 결론
ClickHouse 25.10+는 AWS Glue, Databricks Unity, Polaris, Nessie 등 주요 Data Lake Catalog와의 네이티브 통합을 제공합니다. 본 테스트에서 5개 Catalog 모두 Iceberg 및 Delta Lake 테이블에 대한 Read/Write가 정상 작동함을 확인했습니다.
시작하기:
# 환경 구성
./setup.sh --configure # Catalog 선택 (1-5)
./setup.sh --start
# ClickHouse 시작
cd ../oss-mac-setup && ./set.sh 25.11 && ./start.sh
# 테스트 실행
./test-catalogs.sh # 기본 테스트
./test-unity-deltalake.sh # Unity + Delta Lake 테스트
2025년 내 Delta Lake 네이티브 Write, Iceberg v3 지원 등이 예정되어 있어 ClickHouse의 Lakehouse 통합은 더욱 강화될 전망입니다.
참고 자료:
- ClickHouse Data Catalog Docs
- Climbing the Iceberg with ClickHouse
- DataLakeCatalog in ClickHouse Cloud
추가: ClickHouse Cloud 25.10 Unity Catalog + Delta Lake
2025년 12월, ClickHouse Cloud가 25.10으로 업그레이드됨에 따라, Unity Catalog와 Delta Lake를 사용하시는 분들께 몇 가지 주의사항을 안내드립니다.
기본 기능은 정상 작동합니다
Unity Catalog 연동과 Delta Lake의 기본적인 Read/Write 작업은 25.10에서 문제없이 동작합니다. 단순 조회나 일반적인 쿼리는 그대로 사용하시면 됩니다.
주의사항
Append 작업 시 설정 필요
Delta Lake 테이블에 데이터를 추가(Append)할 때 S3 파일 덮어쓰기 오류가 발생할 수 있습니다. 이 경우 다음 설정을 쿼리에 추가해주세요:
SET s3_truncate_on_insert = 1;
-- 이후 INSERT 작업 수행
INSERT INTO deltaLake('s3://your-bucket/your-table')
SELECT * FROM your_source;또는 세션 단위로 설정하셔도 됩니다.
와일드카드 쿼리 주의
S3 경로에 와일드카드를 사용하는 쿼리에서 예상보다 많은 행이 반환될 수 있습니다. 이는 이전 테스트나 작업에서 남은 파일들이 함께 읽히기 때문입니다.
권장 방법:
- 가능하면 정확한 경로를 명시하세요
- 쿼리 전 대상 경로의 파일 상태를 확인하세요
- 중요한 분석 작업 전 불필요한 파일 정리를 고려하세요
프로덕션 환경 권장사항
Append 작업이 빈번하거나 복잡한 쿼리를 실행하는 프로덕션 환경이라면, 25.11 업그레이드 후 본격적인 운영을 시작하시는 것을 권장드립니다. 25.11에서는 위 이슈들이 자동으로 처리됩니다.