주요 개념
Data Catalog는 사용자 데이터의 메타데이터를 저장하고 관리하는 중앙 리포지토리입니다. 서로 다른 VPC(서브넷)에서 생성된 카탈로그 간에는 메타데이터가 공유되지 않으며, 모든 카탈로그는 고가용성(HA)으로 운영됩니다.
Apache Hive Metastore 호환 카탈로그
- Apache Hive Metastore와 호환되는 기본 Standard 유형의 카탈로그입니다.
- VPC(서브넷)를 지정하여 생성할 수 있습니다.
- 카탈로그에 소유한 데이터의 테이블 정의와 저장 경로 같은 메타데이터를 저장, 수정, 삭제할 수 있습니다.
- Hive 데이터 형식의 데이터베이스와 테이블을 관리합니다.
Apache Iceberg 카탈로그
- Apache Iceberg 테이블 형식을 지원하는 카탈로그입니다.
Apache Iceberg 개요
Iceberg 란?
Apache Iceberg는 대규모 분석 데이터를 하나의 SQL 테이블처럼 안정적으로 다루기 위한 오픈 테이블 포맷입니다. Spark, Trino 등 여러 엔진이 동일한 테이블을 안전하게 동시에 읽고 쓸 수 있도록 설계되었습니다.
Iceberg 주요 특징
- SQL 친화적 작업 : 일반적인 SQL(DML/DDL)을 통해 행 단위 변경을 표현하고, 여러 엔진에서 공통 포맷으로 접근합니다. 엔진별 구현/지원 범위는 다를 수 있습니다.
- 스키마, 파티션 진화 : 테이블을 재생성하지 않고 칼럼 추가/이름 변경/삭제 및 파티션 레이아웃 변경이 가능합니다.
- 히든 파티셔닝 : day(ts), bucket(id) 같은 변환 기반 파티셔닝을 메타데이터로 관리해, 사용자가 물리 디렉터리 구조를 직접 다루지 않아도 됩니다.
- 시간 이동(Time travel), 롤백: 모든 쓰기는 스냅샷을 만들며, 특정 시점/스냅샷으로 조회하거나 되돌리기가 가능합니다. 단 엔진별 제공 방식 상이합니다.(* 지원 예정)
- 운영 최적화(컴팩션 등) : 작은 파일을 묶는 등 파일 레이아웃 최적화로 스캔 성능과 메타데이터 오버헤드를 줄일 수 있습니다.
Data Catalog 서비스에서 사용하기
- Data Catalog 서비스에서는 Iceberg 테이블의 메타데이터(스키마/스냅샷/파티션 변환 등) 를 등록, 관리합니다.
- 쿼리 실행은 Compute 엔진(Spark/Trino 등)에서 수행하며, 엔진 설정 시 REST 카탈로그 URI/웨어하우스(Object Storage) 등을 지정합니다.
지원 범위 및 제약 사항
- 포맷 버전 : Iceberg v2 기준으로 제공합니다. v1 테이블은 조회/생성은 가능하나 일부 기능이 제한될 수 있습니다.
- 카탈로그 수 제한 : 프로젝트(또는 계정)당 Iceberg 카탈로그는 1개만 생성 가능합니다.
- Object Storage : 일반 버킷(S3 호환) 사용을 권장합니다. (클래식 버킷/Swift 방식은 미지원)
데이터베이스
Data Catalog의 데이터베이스는 테이블을 저장하는 컨테이너입니다. 지원 범위는 상위 카탈로그의 유형에 따릅니다.
- 데이터베이스는 메타데이터 테이블을 구성하는 데 사용됩니다.
- 테이블은 하나의 데이터베이스에만 속할 수 있습니다.
- 카카오클라우드 콘솔의 데이터베이스 목록에서는 프로젝트에 속한 모든 데이터베이스를 볼 수 있습니다.
- 지원 유형
- Standard 유형 데이터베이스 : Hive 데이터 형식 기반의 데이터베이스
- Iceberg 유형 데이터베이스 : Iceberg 데이터 형식 기반의 데이터베이스
테이블
Data Catalog에서 테이블은 데이터 스토어의 데이터를 표현하는 메타데이터입니다. 카카오클라우드 콘솔에서 테이블을 생성할 수 있으며, 콘솔의 테이블 목록에는 테이블의 메타데이터 값이 표시됩니다.
- 테이블은 스키마, 파티션, 테이블 속성 등 하위 메타데이터를 포함합니다.
- 테이블을 수동으로 생성하고 테이블 정보를 수정할 수 있습니다.
- Data Catalog를 Hadoop Eco의 메타스토어로 사용하는 경우, 마이그레이션된 테이블의 정보도 수정할 수 있습니다.
- 지원 유형 별 동작 차이
- Standard 유형 테이블 : Hive 기반 테이블로서, Avro/JSON/Parquet/ORC/CSV/TEXT 등 파일 포맷을 지원하며 쿼리 엔진(Hive/Trino 등)으로 조회합니다.
- Iceberg 유형 테이블 : Iceberg 테이블 형식으로서, Avro/Parquet/ORC 등 파일 포맷을 지원하며 Iceberg 고유 기능을 제공합니다.
크롤러
Data Catalog에서 크롤러는 MySQL 데이터를 스캔하여 메타데이터를 추출하고 Data Catalog를 자동으로 업데이트하여 데이터 검색을 간편하게 돕는 기능입니다. 카카오클라우드 콘솔에서 크롤러를 생성할 수 있으며, 테이블 목록에는 크롤러로 생성된 테이블 값이 표시됩니다.
- 크롤러에서 추출된 스키마는 Data Catalog 테이블에 저장되며, 테이블 이름은 Prefix + MySQL의 데이터베이스 이름_테이블 이름으로 설정됩니다.
- 크롤러 실행 내역은 최대 90일까지 노출되며, 90일이 경과된 실행 내역은 자동 삭제됩니다.
- 스케줄을 통해 크롤러 실행 일정을 설정할 수 있습니다.
Iceberg 유형의 카탈로그에서는 크롤러를 지원하지 않습니다.
리소스 상태 정보와 생명주기
Data Catalog에서 상태를 확인할 수 있는 리소스는 카탈로그, 데이터베이스, 테이블입니다. 카탈로그를 생성하면 사용자 소유에 대한 데이터 자산의 메타데이터를 저장하고 관리하는 중앙 리포지토리를 생성합니다. (생성에는 약 10분 정도가 소요됩니다.) 카탈로그는 완전 관리형 중앙 리포지토리로 운영 상태와 종료 상태를 포함하는 다양한 상태값을 가지며, 사용자는 이를 확인하여 카탈로그의 현재 상태를 파악하고 할 수 있습니다.
리소스별 상태 정보는 다음과 같습니다.
카탈로그의 생명 주기
카탈로그의 상태
Standard 유형의 카탈로그의 상태
상태 | 설명 |
---|---|
INIT | Standard 카탈로그 생성 직후 상태 |
PROVISIONING | Standard 카탈로그가 사용할 VM을 생성하는 상태 |
RUNNING | Standard 카탈로그가 실행 중이며, 사용 가능한 상태 |
PENDING | Standard 카탈로그가 오류 상태를 벗어나기 위해 Failover를 진행 중인 상태 |
FATAL | Standard 카탈로그에 오류가 발생하여 복구 불가능한 상태 |
TERMINATING | Standard 카탈로그를 종료하기 위해서 하드웨어 리소스를 반납하는 상태 |
TERMINATED | Standard 카탈로그가 종료되어 사용할 수 없는 상태 |
Iceberg 유형의 카탈로그의 상태
상태 | 설명 |
---|---|
RUNNING | Iceberg 카탈로그가 실행 중이며, 사용 가능한 상태 |
FATAL | Iceberg 카탈로그에 오류가 발생하여 복구 불가능한 상태 |
TERMINATED | Iceberg 카탈로그가 종료되어 사용할 수 없는 상태 |
데이터베이스와 테이블의 상태
데이터베이스와 테이블은 생성, 수정, 삭제 동작에 의해 상태가 변하고, 각각의 상태에 의해서 관리됩니다.
상태는 데이터베이스와 테이블의 동작에 영향을 미치며, 상태에 따라 다음 동작에 영향을 받습니다.
테이블은 스스로 상태를 소유할 뿐만 아니라 데이터베이스의 상태에도 영향을 받습니다.
예를 들어, 테이블은 데이터베이스가 ACTIVE
또는 ALTERING
상태인 경우에만 생성되거나 수정될 수 있습니다.
Standard 유형과 Iceberg 유형의 데이터베이스, 테이블의 상태는 동일합니다.
상태 | 설명 |
---|---|
CREATING | Database, Table 생성 중 |
ALTERING | Database, Table 수정 중 |
DELETING | Database, Table 삭제 중 |
ACTIVE | Database, Table 사용 가능 |
INACTIVE | Database, Table 사용 불가 |
크롤러의 상태
크롤러는 생성, 수정, 실행, 삭제 동작에 의해 상태가 변하고, 각각의 상태에 의해서 관리됩니다.
또한 데이터베이스와 MySQL의 상태에도 영향을 받습니다. 예를 들어, MySQL의 상태가 Available
인 경우에만 크롤러가 생성되거나 동작할 수 있습니다.
상태 | 설명 |
---|---|
CREATING | 크롤러 생성 중 |
ALTERING | 크롤러 수정 중 |
DELETING | 크롤러 삭제 중 |
ACTIVE | Database, Table 사용 가능 |
RUNNING | 크롤러 실행 중 |
INACTIVE | 크롤러 사용 불가 (ex: 데이터베이스가 삭제된 경우 INACTIVE 상태로 변경) 단, 크롤러 기록은 확인 가능 |