Lakehouse for Apache Iceberg 는 Google Cloud의 관리형 데이터 레이크하우스 플랫폼입니다. 이 플랫폼 내에서 Lakehouse 런타임 카탈로그 는 완전 관리형 서버리스 metastore 서비스로 작동합니다. 데이터 레이크하우스의 단일 소스를 제공하므로 Apache Spark, Apache Flink, Apache Hive, BigQuery를 비롯한 여러 엔진에서 파일을 복사하지 않고도 테이블과 메타데이터를 공유할 수 있습니다.
쿼리 엔진을 metastore에 연결하려면 Apache Iceberg REST 카탈로그 엔드포인트와 같은 특정 카탈로그 유형을 사용하여 클라이언트를 구성합니다. 이 엔드포인트는 테이블 메타데이터를 관리하고 Cloud Storage 버킷으로 지원되는 스토리지 위치 웨어하우스를 사용하여 기본 메타데이터 및 데이터 파일을 저장합니다. 카탈로그 유형 선택에 대한 자세한 내용은 카탈로그 유형 및 엔드포인트 구성을 참조하세요.
Lakehouse 런타임 카탈로그는 스토리지 액세스 위임을 지원합니다. 이 기능은 사용자 인증 정보 제공이라고도 하며, Cloud Storage 버킷에 직접 액세스할 필요가 없으므로 보안을 개선합니다. 또한 통합 거버넌스, 계보, 데이터 품질을 위해 Knowledge Catalog와 통합됩니다.
주요 기능
Lakehouse for Apache Iceberg의 핵심 구성요소인 Lakehouse 런타임 카탈로그는 서버리스 아키텍처, 개방형 API와의 엔진 상호 운용성, 통합 사용자 환경, BigQuery와 함께 사용할 때의 고성능 분석, 스트리밍, AI를 비롯하여 데이터 관리 및 분석에 여러 이점을 제공합니다. 이러한 이점에 대한 자세한 내용은 Lakehouse란 무엇인가요?를 참조하세요.
지원되는 엔진
Lakehouse 런타임 카탈로그는 Apache Spark, Apache Flink, Apache Hive, Trino를 비롯한 여러 쿼리 엔진과 호환됩니다 (이에 국한되지 않음). 다음 표에는 각 엔진의 문서 링크가 나와 있습니다.
| 엔진 | 문서 |
|---|---|
| Apache Spark | 빠른 시작: Spark 및 Iceberg REST 카탈로그 엔드포인트와 함께 사용 |
| Apache Hive | Spark 및 Hive 카탈로그와 함께 사용 |
| Apache Flink | Apache Flink와 함께 사용 |
| Trino | Trino와 함께 사용 |
카탈로그 유형 및 엔드포인트 구성
Lakehouse 런타임 카탈로그 metastore에 연결하도록 클라이언트 엔진을 구성할 때는 Apache Iceberg REST 카탈로그 엔드포인트 또는 Apache Hive 엔드포인트와 같은 특정 카탈로그 엔드포인트를 선택합니다. 가장 적합한 옵션은 다음 표와 같이 사용 사례에 따라 다릅니다.
| 사용 사례 | 권장사항 |
|---|---|
| 오픈소스 엔진이 Cloud Storage의 데이터에 액세스하고 BigQuery 및 PostgreSQL용 AlloyDB를 비롯한 다른 엔진과의 상호 운용성이 필요한 새로운 Lakehouse 런타임 카탈로그 사용자입니다. | Apache Iceberg REST 카탈로그 엔드포인트를 사용합니다. |
| Hive Metastore 인터페이스에 종속되고 완전 관리형 metastore 서비스를 원하는 Apache Hive 또는 Spark 워크로드를 실행하는 사용자입니다. | Apache Hive 카탈로그 엔드포인트를 사용합니다.. |
| BigQuery 엔드포인트용 커스텀 Apache Iceberg 카탈로그로 생성된 현재 테이블이 있는 기존 Lakehouse 런타임 카탈로그 사용자입니다. | BigQuery 엔드포인트용 커스텀 Apache Iceberg 카탈로그를 계속 사용하되, 새 워크플로에는 Apache Iceberg REST 카탈로그 를 사용합니다. BigQuery 카탈로그 페더레이션을 통해 Apache Iceberg REST 카탈로그 엔드포인트로 BigQuery 엔드포인트용 커스텀 Apache Iceberg 카탈로그로 생성된 테이블을 볼 수 있습니다. |
Lakehouse 아키텍처가 Google Cloud 서비스와 통합되는 방식
Lakehouse가 데이터를 관리하는 방식을 이해하려면 Lakehouse for Apache Iceberg 아키텍처가 Google Cloud 서비스와 통합되는 방식을 알아보세요. Apache Iceberg는 모놀리식 테이블에 데이터를 저장하지 않습니다. 대신 메타데이터 파일의 계층화된 아키텍처를 사용하여 데이터 파일을 ACID 트랜잭션 지원이 포함된 일관된 테이블 구조로 구성합니다.
다음 다이어그램은 Managed Service for Apache Spark와 같은 컴퓨팅 엔진이 Lakehouse 런타임 카탈로그를 사용하여 테이블 메타데이터를 관리하여 Cloud Storage에서 기본 Parquet 데이터 파일을 직접 읽고 쓰는 방법을 보여줍니다.
Lakehouse for Apache Iceberg를 사용하는 경우 기술 아키텍처는 다음과 같은 세 가지 고유한 레이어로 구성됩니다.
카탈로그 레이어:
- 핵심 Iceberg 개념: 카탈로그는 최신 메타데이터 파일에 대한 포인터를 유지하여 테이블의 현재 상태를 저장합니다. 이 레이어는 ACID 규정 준수 및 트랜잭션 격리를 지원하여 동시 쓰기가 서로 방해하지 않도록 합니다.
- Lakehouse 구현: Lakehouse 런타임 카탈로그는 최상위 지역 metastore 서비스 역할을 합니다. 이 서비스 내에서 개별 카탈로그 를 만들어 데이터 계층 구조를 관리합니다. 클라이언트 쿼리 엔진은 Apache Iceberg REST 카탈로그 엔드포인트와 같은 특정 엔드포인트 카탈로그 유형을 사용하여 이러한 카탈로그에 연결합니다. metastore는 트랜잭션 커밋, 스토리지 액세스 위임을 위한 사용자 인증 정보 제공, 카탈로그 전반의 포인터 관리를 관리합니다.
메타데이터 레이어:
- 핵심 Iceberg 개념: 이 레이어는 세 가지 파일 유형의 계층 구조를 사용하여 테이블 구조,
스냅샷, 파일 위치를 추적합니다.
- 메타데이터 파일: 테이블의 스키마, 파티션 사양, 스냅샷 포인터 로그를 저장합니다.
- 매니페스트 목록: 매니페스트 파일 모음을 그룹화하여 테이블의 단일 스냅샷을 나타냅니다.
- 매니페스트 파일: 개별 파일 수준에서 데이터를 추적하여 파일 경로, 파티션 정보, 열 수준 통계(예: 행 수, 최솟값, 최댓값)를 저장합니다. 이러한 통계는 쿼리 최적화 및 파티션 프루닝에 사용됩니다.
- Lakehouse 구현: 카탈로그 컨테이너 내에서
데이터를 논리적 네임스페이스 (데이터 세트와 유사) 및 테이블로 구성합니다. 각 테이블의 경우 Lakehouse 런타임 카탈로그는 매니페스트 목록과 매니페스트 파일을 가리키는 루트
metadata.json파일부터 시작하여 기본 Iceberg 메타데이터 계층 구조를 생성하고 관리합니다. Lakehouse 런타임 카탈로그는 지정된 웨어하우스 스토리지 위치에 이러한 파일을 직접 유지합니다.
- 핵심 Iceberg 개념: 이 레이어는 세 가지 파일 유형의 계층 구조를 사용하여 테이블 구조,
스냅샷, 파일 위치를 추적합니다.
데이터 레이어:
- 핵심 Iceberg 개념: 이 구성요소는 실제 원시 데이터 레코드가 있는 기본 스토리지로, 일반적으로 Parquet, ORC, Avro와 같은 최적화된 열 기반 또는 행 기반 개방형 파일 형식입니다.
- Lakehouse 구현: 스토리지 위치
웨어하우스는
gs://경로가 있는 Cloud Storage 버킷입니다. 테이블에서 참조하는 실제 데이터 파일은 버킷에 안전하게 유지됩니다. Lakehouse 런타임 카탈로그는 스토리지 액세스를 위임하므로 클라이언트 엔진은 광범위한 IAM 버킷 권한을 직접 요구하지 않고도 이러한 데이터 파일을 읽고 쓸 수 있습니다.
Lakehouse 런타임 카탈로그 제한사항
Lakehouse 런타임 카탈로그의 테이블에는 다음 제한사항이 적용됩니다.
테이블 관리
- BigQuery 데이터 정의 언어 (DDL) 또는 데이터 조작 언어 (DML) 문을 사용하여 Apache Iceberg REST 카탈로그 엔드포인트로 테이블을 만들거나 수정할 수 없습니다. BigQuery API (bq 명령줄 도구 또는 클라이언트 라이브러리 사용)를 사용하여 이러한 테이블을 수정할 수 있지만, 이렇게 하면 외부 엔진과 호환되지 않는 변경사항이 발생할 수 있습니다.
- Lakehouse 런타임 카탈로그의 테이블은
이름 변경 작업 또는
ALTER TABLE ... RENAME TOSpark SQL 문을 지원하지 않습니다. - 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 (기본)와의 차이점
Lakehouse 런타임 카탈로그와 BigLake metastore (기본)의 핵심 차이점은 다음과 같습니다.
- Lakehouse 런타임 카탈로그는 Spark와 같은 오픈소스 엔진과의 직접 통합을 지원하므로 메타데이터를 저장하고 작업을 실행할 때 중복을 줄일 수 있습니다. Lakehouse 런타임 카탈로그의 테이블은 여러 오픈소스 엔진과 BigQuery에서 직접 액세스할 수 있습니다.
- Lakehouse 런타임 카탈로그는 Apache Iceberg REST 카탈로그 엔드포인트를 지원하지만 BigLake metastore (기본)는 지원하지 않습니다.
다음 단계
- Apache Iceberg REST 카탈로그 엔드포인트를 이해합니다.