본문으로 건너뛰기
최종 수정: 에

Catalog 통합

요약 Apache Doris의 Catalog 통합은 레이크하우스에서 이미 사용 중인 대부분의 Catalog 서비스를 지원합니다. 여기에는 Hive Metastore, AWS Glue, Iceberg REST 사양(Tabular, Polaris, Lakekeeper, Snowflake Open Catalog, Gravitino, Unity), AWS S3 Tables, Aliyun DLF, 파일 기반 Hadoop, JDBC 백엔드가 포함됩니다. 모든 백엔드는 하나의 CREATE CATALOG 문으로 연결하며, iceberg.catalog.type 또는 hive.metastore.type으로 선택합니다. 자격 증명과 웨어하우스를 지정하면 모든 백엔드에서 동일한 SQL을 사용할 수 있습니다.

Apache Doris Catalog 통합: Doris를 Glue, Iceberg REST, HMS, S3 Tables, Polaris, Unity, DLF 등에 연결하여 하나의 엔진으로 모든 레이크하우스 Catalog와 연동하세요.

Apache Doris Catalog 통합을 사용하는 이유는 무엇인가요?​

Apache Doris의 Catalog 통합을 사용하면 하나의 엔진으로 널리 쓰이는 모든 레이크하우스 Catalog와 연동할 수 있으므로, 메타스토어 선택에 따라 쿼리 계층이 결정되지 않습니다. Catalog를 선택하는 주체는 대개 분석 엔진이 아닙니다. 메타스토어는 다른 환경에서 정해집니다. 수년 전에 Hive Metastore를 선택한 Hadoop 클러스터, Glue를 표준으로 채택한 AWS 계정, Polaris를 막 도입한 플랫폼 팀, Unity를 사용하는 Databricks 워크스페이스 등이 그 예입니다. 쿼리 엔진이 이 중 하나만 지원한다면, 변환 계층을 구축하거나 레이크를 엔진이 지원하는 범위로 제한해야 합니다.

Apache Doris는 다양한 Catalog를 지원하면서 SQL은 일관되게 유지하는 방식을 택합니다. CREATE CATALOG를 입력하고 유형을 선택하면, 메타데이터가 어디에 있든 동일한 Iceberg 또는 Hive 테이블에 대해 SHOW DATABASES, SELECT, 조인, 쓰기, 타임 트래블을 사용할 수 있습니다. 다중 Catalog 페더레이션 및 통합 메타데이터 캐시와 함께 사용하면 레이크 테이블을 관리하는 전체 과정도 처리할 수 있습니다.

  • 하나의 엔진으로 여러 메타스토어를 지원합니다. Catalog마다 별도의 쿼리 계층을 운영할 필요가 없습니다.
  • 새로운 Catalog 서비스는 백엔드 유형으로 추가됩니다. Iceberg REST, S3 Tables, Polaris, Unity는 모두 동일한 연결 기반 구조를 재사용합니다.
  • 기존 메타스토어에서 이전할 때는 CREATE CATALOG 문만 있으면 됩니다. 플랫폼 전체를 바꿀 필요가 없습니다.

Apache Doris Catalog 통합이란 무엇인가요?​

Apache Doris의 Catalog 통합은 외부 Catalog 인터페이스를 특정 메타데이터 서비스에 연결하는 백엔드 드라이버입니다. Iceberg 테이블은 iceberg.catalog.type으로 유형을 선택하고, Hive 방식의 테이블은 type = 'hms'와 hive.metastore.type을 통해 선택합니다. 어떤 Catalog를 선택하든 스토리지 자격 증명(S3, OSS, COS, HDFS)은 별도로 설정합니다.

현재 제공되는 백엔드는 다음과 같습니다.

  • Hive Metastore (hms): 오랫동안 사용되어 온 Thrift 서비스로, simple 또는 Kerberos 인증을 지원하며 Hive, Iceberg, Paimon 테이블에 사용됩니다.
  • AWS Glue (glue): AWS의 관리형 Hive 호환 Catalog입니다. Hive 백엔드(hive.metastore.type=glue), 네이티브 Iceberg Glue 클라이언트(iceberg.catalog.type=glue)로 접근할 수 있으며, S3 Table Bucket에 연결할 때는 Glue의 Iceberg REST 엔드포인트를 통해서도 접근할 수 있습니다.
  • Iceberg REST (rest): 공개된 Iceberg REST Catalog 사양입니다. 동일한 백엔드로 Tabular 방식의 서비스, Apache Polaris, Lakekeeper, Snowflake Open Catalog, Apache Gravitino, Databricks Unity의 Iceberg REST 엔드포인트를 지원합니다.
  • AWS S3 Tables (s3tables): Table Bucket에 연결된 AWS의 관리형 Iceberg Catalog입니다. SigV4 서명을 사용해 Glue의 REST 엔드포인트를 통해서도 접근할 수 있습니다.
  • Aliyun DLF (dlf): Iceberg와 Hive에는 HMS 호환 인터페이스를 통해 Data Lake Formation 1.0을 사용하고, Paimon에는 REST를 통해 DLF 2.5+를 사용합니다.
  • Hadoop 파일 시스템 (hadoop): 파일 기반 Iceberg 메타데이터를 사용하며 메타스토어 데몬이 필요하지 않아, 독립적으로 구성된 웨어하우스에 유용합니다.
  • JDBC Catalog (jdbc): Iceberg 메타데이터를 SQL 데이터베이스(Postgres, MySQL)에 저장합니다. 별도 서비스를 운영하지 않고 트랜잭션을 지원하는 메타스토어가 필요할 때 유용합니다.
  • Unity Catalog: Iceberg REST 백엔드를 통해 접근하며, OAuth2와 vended credentials를 사용합니다.

주요 용어

  • type: Catalog 계열입니다. iceberg, hms, paimon, hudi, jdbc 등이 있습니다.
  • iceberg.catalog.type: Iceberg 계열 내부의 메타스토어 드라이버입니다. hms, rest, glue, dlf, jdbc, hadoop, s3tables 중 하나입니다.
  • hive.metastore.type: Hive 방식의 Catalog에서 같은 역할을 하는 설정입니다. hms(기본값), glue 또는 dlf를 선택합니다.
  • Vended credentials: REST Catalog에 테이블별 단기 스토리지 자격 증명을 요청하는 Apache Doris 기능으로, Catalog 속성에 AK를 직접 설정할 필요가 없습니다.
  • Warehouse: Catalog가 새 테이블을 생성하는 스토리지 루트입니다. hadoop에는 필수이며, 대부분의 다른 백엔드에서는 선택 사항입니다.

Apache Doris Catalog 통합은 어떻게 작동하나요?​

Apache Doris의 Catalog 통합은 CREATE CATALOG 시점에 선택한 백엔드 드라이버를 통해 메타데이터 호출을 전달하고, BE가 이미 사용 중인 동일한 통합 스토리지 계층을 통해 읽기와 쓰기를 처리합니다.

  1. 백엔드를 선택합니다. Apache Doris의 IcebergExternalCatalogFactory는 iceberg.catalog.type에 따라 IcebergHMSExternalCatalog, IcebergGlueExternalCatalog, IcebergRestExternalCatalog, IcebergDLFExternalCatalog, IcebergJdbcExternalCatalog, IcebergHadoopExternalCatalog, IcebergS3TablesExternalCatalog 중 하나를 인스턴스화합니다. Hive 계열 Catalog도 hms 드라이버와 hive.metastore.type을 통해 같은 방식으로 라우팅됩니다.
  2. 메타데이터를 조회합니다. 선택한 백엔드는 고유 프로토콜(HMS는 Thrift, Glue는 AWS SDK, REST는 HTTP)을 통해 SHOW DATABASES, 스키마 조회, 스냅샷 조회, 파티션 목록 조회를 처리합니다.
  3. 스토리지에 연결합니다. 전달한 자격 증명(s3.access_key, oss.endpoint, REST Catalog에서 발급한 자격 증명 등)은 BE가 Parquet, ORC, Avro 파일을 읽는 데 사용하는 통합 스토리지 계층으로 전달됩니다.
  4. 캐시로 속도를 높입니다. 스키마, 테이블 객체, 매니페스트, 뷰는 meta.cache.iceberg.* 키 아래에 Catalog별로 캐시됩니다. 캐시 제거 방식은 메타데이터 캐시를 참조하세요.
  5. 실행 계획을 수립하고 실행합니다. 이후에는 Apache Doris 내부 쿼리와 동일한 MPP 파이프라인을 사용하며, 동일한 데이터 캐시, 구체화된 뷰 재작성, 벡터화 실행을 재사용합니다.

빠른 시작​

-- Connect to an Iceberg REST catalog (Polaris, Lakekeeper, Tabular,
-- Snowflake Open Catalog, Unity, or any spec-compatible service).
CREATE CATALOG iceberg_rest PROPERTIES (
'type' = 'iceberg',
'iceberg.catalog.type' = 'rest',
'iceberg.rest.uri' = 'https://catalog.example.com/api/catalog',
'warehouse' = 'analytics',
'iceberg.rest.security.type' = 'oauth2',
'iceberg.rest.oauth2.credential' = 'client_id:client_secret',
'iceberg.rest.vended-credentials-enabled' = 'true',
's3.endpoint' = 'https://s3.us-west-2.amazonaws.com',
's3.region' = 'us-west-2'
);

SWITCH iceberg_rest;
SELECT region, SUM(amount) FROM sales.orders WHERE dt = '2026-05-01' GROUP BY region;

예상 결과

+--------+-----------+
| region | sum |
+--------+-----------+
| us | 184320.50 |
| eu | 91200.00 |
+--------+-----------+

SHOW CATALOGS를 실행하면 iceberg_rest가 internal과 함께 나열됩니다. PROPERTIES 블록을 Glue, HMS 또는 S3 Tables 백엔드용으로 바꿔도 동일한 형태의 쿼리를 사용할 수 있으며, 연결 블록만 달라집니다.

Apache Doris Catalog 통합은 언제 사용해야 하나요?​

레이크하우스 메타데이터가 이미 외부 서비스에 있고, 데이터를 이동하지 않고 하나의 엔진으로 읽고 쓰려는 경우 Apache Doris의 Catalog 통합을 사용하세요.

적합한 경우

  • Hive Metastore, Glue, DLF 또는 Iceberg REST 서비스에서 이미 운영 중인 레이크가 있으며, 데이터를 이동하지 않고 Apache Doris로 읽고 쓰려는 경우입니다.
  • 여러 리전이나 공급자에 걸쳐 작업하는 경우입니다. 예를 들어 한 계정의 Glue Catalog를 읽어 다른 계정의 Polaris Catalog와 조인할 수 있습니다. 페더레이션에 관한 내용은 다중 Catalog를 참조하세요.
  • Catalog 서비스 사이에서 마이그레이션하는 경우입니다. 기존 서비스와 새 서비스를 각각 별도의 Catalog로 연결하여 병행 운영하고, 준비가 되면 전환할 수 있습니다.
  • 엔진에 장기 스토리지 키를 노출하지 않도록 vended credentials가 필요한 클라우드 네이티브 배포 환경입니다.
  • 메타스토어 데몬을 운영하기에는 부담이 큰 파일 기반 또는 단일 테넌트 Iceberg 레이크입니다. hadoop 백엔드는 파일 시스템에서 메타데이터를 직접 읽습니다.

적합하지 않은 경우

  • Confluent Schema Registry와 같은 운영 메타데이터 저장소입니다. 이러한 저장소는 테이블이 아닌 데이터 전송 형식을 설명합니다.
  • Apache Doris를 레이크 메타데이터의 기준 저장소로 사용하는 경우입니다. 쓰기 작업은 연결된 Catalog에 반영되지만 Apache Doris 자체가 Catalog는 아닙니다. Apache Doris가 전적으로 관리하는 테이블에는 internal Catalog를 사용하세요.
  • Catalog가 전혀 없는 상태에서 원시 파일을 읽는 경우입니다. 빈 Catalog를 구성하는 대신 테이블 값 함수(s3(), hdfs(), local())를 사용하세요.

추가 참고 자료​

  • 다중 Catalog: 여기서 연결한 Catalog 간의 조인을 지원하는 페더레이션 계층입니다.
  • 레이크 테이블 관리: Catalog를 연결한 후 Iceberg 및 Hive 테이블의 쓰기, 스키마 진화, 수명 주기를 관리하는 방법을 설명합니다.
  • Iceberg Catalog: 속성별 레퍼런스, 버전별 지원 현황, 각 백엔드의 기능 지원 표를 제공합니다.
  • AWS Glue, Iceberg REST Catalog, Hive Metastore, Aliyun DLF: 예제가 포함된 백엔드별 전체 연결 가이드입니다.
  • Catalog 개요: 모든 백엔드에 적용되는 공통 속성(include_database_list, 대소문자 구분, 새로 고침)을 설명합니다.
  • 메타데이터 캐시: 최신 상태를 유지하면서 반복 쿼리를 빠르게 처리하는 캐시 모델을 설명합니다.
  • Iceberg: 일곱 가지 Iceberg Catalog 백엔드 모두에서 Doris가 제공하는 엔진 수준의 기능을 설명합니다.