Lakehouse 런타임 카탈로그 정보

Lakehouse for Apache Iceberg는Google Cloud의 관리형 데이터 레이크하우스 플랫폼입니다. 핵심은 데이터의 단일 정보 소스 역할을 하는 완전 관리형 서버리스 metastore 서비스인 Lakehouse 런타임 카탈로그입니다. 이 메타데이터를 중앙 집중화하면 Apache Spark, Apache Flink, Apache Hive, BigQuery를 비롯한 여러 처리 엔진이 파일을 중복하지 않고 테이블을 원활하게 공유할 수 있습니다.

쿼리 엔진을 metastore에 연결하려면 Apache Iceberg REST 카탈로그와 같은 엔드포인트를 사용하여 클라이언트를 구성합니다. 이는 Lakehouse 런타임 카탈로그 내에서 테이블 메타데이터를 처리하는 관리 인터페이스 역할을 하며, Cloud Storage를 사용하여 기본 메타데이터와 데이터 파일을 저장합니다.

주요 기능

Lakehouse의 핵심 구성요소인 레이크하우스 런타임 카탈로그는 BigQuery와 함께 사용할 때 서버리스 아키텍처, 개방형 API를 통한 엔진 상호 운용성, 통합 사용자 환경, 고성능 분석, 스트리밍, AI 등 데이터 관리 및 분석에 여러 이점을 제공합니다. 이러한 이점에 대한 자세한 내용은 레이크하우스란 무엇인가요?를 참고하세요.

레이크하우스와 Google Cloud의 통합 방법

Lakehouse에서 데이터를 관리하는 방법을 알아보려면 Lakehouse for Apache Iceberg 아키텍처가 Google Cloud 서비스와 통합되는 방식을 참고하세요. Apache Iceberg는 모놀리식 테이블에 데이터를 저장하지 않습니다. 대신 메타데이터 파일의 계층화된 아키텍처를 사용하여 데이터 파일을 ACID 트랜잭션 지원이 포함된 일관된 테이블 구조로 정리합니다.

다음 다이어그램은 관리형 Apache Spark 서비스와 같은 컴퓨팅 엔진이 레이크하우스 런타임 카탈로그를 사용하여 테이블 메타데이터를 관리하여 Cloud Storage에서 기본 Parquet 데이터 파일을 직접 읽고 쓰는 방법을 보여줍니다.

레이크하우스 아키텍처의 구성요소(Managed Service for Apache Spark, Cloud Storage, Lakehouse REST 카탈로그 등)
레이크하우스 아키텍처 다이어그램.

Lakehouse for Apache Iceberg를 사용하는 경우 기술 아키텍처는 다음과 같은 세 가지 개별 레이어로 구성됩니다.

  1. 카탈로그 레이어:

    • 핵심 Iceberg 개념: 카탈로그는 최신 메타데이터 파일에 대한 포인터를 유지하여 테이블의 현재 상태를 저장합니다. 이 레이어는 ACID 규정 준수 및 트랜잭션 격리를 지원하여 동시 쓰기가 서로 간섭하지 않도록 합니다.
    • 레이크하우스 구현: 레이크하우스 런타임 카탈로그는 최상위 지역 metastore 서비스 역할을 합니다. 이 서비스 내에서 개별 카탈로그를 만들어 데이터 계층 구조를 관리합니다. 클라이언트 쿼리 엔진은 Apache Iceberg REST 카탈로그 엔드포인트와 같은 특정 엔드포인트 카탈로그 유형을 사용하여 이러한 카탈로그에 연결합니다. 메타스토어는 트랜잭션 커밋, 스토리지 액세스 위임을 위한 사용자 인증 정보 제공, 카탈로그 전반의 포인터 관리를 관리합니다.
  2. 메타데이터 레이어:

    • 핵심 Iceberg 개념: 이 레이어는 세 가지 파일 유형의 계층 구조를 사용하여 테이블 구조, 스냅샷, 파일 위치를 추적합니다.
      • 메타데이터 파일: 테이블의 스키마, 파티션 사양, 스냅샷 포인터 로그를 저장합니다.
      • 매니페스트 목록: 매니페스트 파일 모음을 그룹화하여 테이블의 단일 스냅샷을 나타냅니다.
      • 매니페스트 파일: 개별 파일 수준에서 데이터를 추적하여 파일 경로, 파티션 정보, 열 수준 통계(예: 행 수, 최솟값, 최댓값)를 저장합니다. 이러한 정보는 쿼리 최적화 및 파티션 가지치기에 사용됩니다.
    • 레이크하우스 구현: 카탈로그 컨테이너 내에서 데이터를 논리적 네임스페이스 (데이터 세트와 유사) 및 테이블로 구성합니다. 각 테이블에 대해 Lakehouse 런타임 카탈로그는 매니페스트 목록과 매니페스트 파일을 가리키는 루트 metadata.json 파일로 시작하는 기본 Iceberg 메타데이터 계층 구조를 생성하고 관리합니다. Lakehouse 런타임 카탈로그는 지정된 웨어하우스 스토리지 위치에 이러한 파일을 직접 유지합니다.
  3. 데이터 영역:

    • 핵심 Iceberg 개념: 이 구성요소는 실제 원시 데이터 레코드가 상주하는 기본 스토리지로, 일반적으로 Parquet, ORC, Avro와 같은 최적화된 열 또는 행 기반 개방형 파일 형식입니다.
    • 레이크하우스 구현: Cloud Storage 웨어하우스 위치 (bl:// 또는 gs://)를 구성하면 테이블에서 참조하는 실제 데이터 파일이 버킷 내에 안전하게 저장됩니다. Lakehouse 런타임 카탈로그는 스토리지 액세스 위임 (사용자 인증 정보 판매)을 통해 액세스를 관리하여 클라이언트 엔진에 직접 단기 액세스 토큰을 판매합니다. 이를 통해 엔진은 기본 버킷에 대한 광범위한 직접 IAM 권한이 없어도 데이터 파일을 안전하게 읽고 쓸 수 있습니다.

레이크하우스에서 Apache Iceberg REST 카탈로그 API를 구현하는 방법

레이크하우스 런타임 카탈로그는 네임스페이스와 테이블을 관리하기 위해 오픈소스 Apache Iceberg REST 카탈로그 API를 구현합니다. 또한 카탈로그 관리를 위한 확장 프로그램 API도 제공합니다.

클라이언트 쿼리 엔진은 이러한 표준 REST 카탈로그 API를 사용하여 메타스토어와 상호작용합니다. Google Cloud 리소스 및 엔드포인트에 관한 자세한 내용은 Lakehouse REST API 참조를 참고하세요.

Google Cloud 콘솔, gcloud CLI, REST API 또는 Terraform을 사용하여 이러한 리소스를 만들고 구성하고 관리할 수 있습니다. 자세한 내용은 다음 페이지를 참조하세요.

쿼리 엔진 호환성 및 구성

Lakehouse 런타임 카탈로그에서 데이터를 분석하고 관리하려면 다양한 오픈소스 및 엔터프라이즈 쿼리 엔진을 연결하면 됩니다. 기존 아키텍처 및 워크로드 요구사항에 따라 지원되는 여러 엔진 중에서 선택하고 적절한 카탈로그 엔드포인트를 구성할 수 있습니다.

지원되는 엔진

레이크하우스 런타임 카탈로그는 Apache Spark, Apache Flink, Apache Hive, Trino를 비롯한 여러 쿼리 엔진과 호환됩니다. 다음 표에는 각 엔진의 문서 링크가 나와 있습니다.

Engine 문서
Apache Spark Apache Spark와 함께 사용
Apache Hive Spark 및 Hive 카탈로그와 함께 사용
Apache Flink Apache Flink와 함께 사용
Trino Trino와 함께 사용

카탈로그 유형 및 엔드포인트 구성

Lakehouse 런타임 카탈로그 metastore에 연결하도록 클라이언트 엔진을 구성할 때 Apache Iceberg REST 카탈로그 엔드포인트 또는 Apache Hive 엔드포인트와 같은 특정 카탈로그 엔드포인트를 선택합니다. 가장 적합한 옵션은 다음 표와 같이 사용 사례에 따라 다릅니다.

사용 사례 권장사항
오픈소스 엔진이 Cloud Storage의 데이터에 액세스하고 BigQuery 및 PostgreSQL용 AlloyDB를 비롯한 다른 엔진과의 상호 운용성이 필요한 새로운 레이크하우스 런타임 카탈로그 사용자 Apache Iceberg REST 카탈로그 엔드포인트를 사용합니다.
Hive Metastore 인터페이스에 의존하는 Apache Hive 또는 Spark 워크로드를 실행하고 완전 관리형 메타스토어 서비스를 원하는 사용자 Apache Hive 카탈로그 엔드포인트를 사용합니다.
BigQuery 엔드포인트용 맞춤 Apache Iceberg 카탈로그로 생성된 현재 테이블이 있는 기존 Lakehouse 런타임 카탈로그 사용자 BigQuery 엔드포인트용 맞춤 Apache Iceberg 카탈로그를 계속 사용하되, 새 워크플로에는 Apache Iceberg REST 카탈로그를 사용합니다. BigQuery 엔드포인트용 맞춤 Apache Iceberg 카탈로그로 만든 테이블은 BigQuery 카탈로그 페더레이션을 통해 Apache Iceberg REST 카탈로그 엔드포인트에서 볼 수 있습니다.

Lakehouse 런타임 카탈로그 제한사항

BigQuery를 통해 Lakehouse 런타임 카탈로그의 테이블을 쿼리할 때는 다음과 같은 일반적인 제한사항이 적용됩니다. 개별 카탈로그 엔드포인트 (예: Apache Iceberg REST 또는 Apache Hive)에는 엔드포인트별 제한사항이 추가로 있을 수 있습니다.

표 관리

  • Apache Iceberg V2 테이블 (정식 버전) 및 V3 테이블 (프리뷰)이 지원됩니다. Iceberg V1 테이블은 지원되지 않습니다. Lakehouse 런타임 카탈로그에서 기존 V1 테이블을 사용하려면 지원되는 버전으로 업그레이드해야 합니다. 자세한 내용은 Iceberg V1 테이블을 V2로 업그레이드를 참고하세요.
  • BigQuery 데이터 정의 언어 (DDL) 또는 데이터 조작 언어 (DML) 문을 사용하여 Apache Iceberg REST 카탈로그 엔드포인트로 테이블을 만들거나 수정할 수 없습니다. BigQuery API (bq 명령줄 도구 또는 클라이언트 라이브러리 사용)를 사용하여 이러한 테이블을 수정할 수 있지만, 이렇게 하면 외부 엔진과 호환되지 않는 변경사항이 발생할 수 있습니다.
  • 레이크하우스 런타임 카탈로그의 테이블은 이름 변경 작업 또는 ALTER TABLE ... RENAME TO Spark SQL 문을 지원하지 않습니다.
  • Lakehouse 런타임 카탈로그의 테이블은 클러스터링을 지원하지 않습니다.
  • Lakehouse 런타임 카탈로그의 테이블은 유연한 열 이름을 지원하지 않습니다.
  • Lakehouse 런타임 카탈로그는 데이터베이스 또는 메타스토어 뷰를 지원하지 않습니다.

    유연한 열 이름을 사용 설정합니다.

  • Lakehouse 런타임 카탈로그는 Apache Iceberg 뷰를 지원하지 않습니다.

쿼리

  • BigQuery 엔진에서 Lakehouse 런타임 카탈로그의 테이블 쿼리 성능은 표준 BigQuery 테이블의 데이터를 쿼리할 때보다 느릴 수 있습니다. 일반적으로 쿼리 속도는 Cloud Storage에서 데이터를 읽는 것과 동일해야 합니다.
  • Lakehouse 런타임 카탈로그의 테이블을 사용하는 쿼리의 BigQuery 테스트 실행은 행이 반환되더라도 0바이트의 하한 데이터를 보고할 수 있습니다. 이 결과는 전체 쿼리가 실행될 때까지 테이블에서 처리되는 데이터 양을 확인할 수 없기 때문에 발생합니다. 쿼리를 실행해도 이 데이터 처리 비용이 발생합니다.
  • 와일드 카드 테이블 쿼리에서는 Lakehouse 런타임 카탈로그의 테이블을 참조할 수 없습니다.

API 및 메타데이터

  • tabledata.list 메서드를 사용하여 Lakehouse 런타임 카탈로그의 테이블에서 데이터를 가져올 수 없습니다. 대신 쿼리 결과를 BigQuery 테이블에 저장한 다음 해당 테이블에서 tabledata.list 메서드를 사용할 수 있습니다.
  • Lakehouse 런타임 카탈로그의 테이블에 대한 테이블 스토리지 통계 표시는 지원되지 않습니다.

할당량 및 한도

  • BigQuery의 Lakehouse 런타임 카탈로그에 있는 테이블에는 표준 테이블과 동일한 할당량 및 한도가 적용됩니다.

BigLake metastore(기본)와의 차이점

레이크하우스 런타임 카탈로그와 BigLake metastore (기본)의 핵심 차이점은 다음과 같습니다.

  • Lakehouse 런타임 카탈로그는 Spark와 같은 오픈소스 엔진과의 직접 통합을 지원하므로 메타데이터를 저장하고 작업을 실행할 때 중복을 줄일 수 있습니다. Lakehouse 런타임 카탈로그의 테이블은 여러 오픈소스 엔진과 BigQuery에서 직접 액세스할 수 있습니다.
  • Lakehouse 런타임 카탈로그는 Apache Iceberg REST 카탈로그 엔드포인트를 지원하지만 BigLake metastore (기본)는 지원하지 않습니다.

다음 단계