LLM WikiAccess-protected knowledge portal
← 스터디 홈
41편 · 약 16분

Apache Gravitino 1.3.0: AWS Glue·논리 뷰 통합 관리·계층 네임스페이스로 멀티엔진 Lakehouse 거버넌스 제어면을 확장한 방식

왜 Gravitino가 필요한가

멀티엔진 Lakehouse의 현실적 문제는 테이블 형식보다 메타데이터 단편화에 있다.

Spark로 Iceberg 테이블을 만들고, Trino로 조회하며, Flink로 스트리밍 쓰기를 하는 팀이라면 이미 경험했을 것이다. 같은 테이블의 스키마가 엔진마다 다르게 보이거나, 권한 설정이 Hive Metastore, AWS Glue, Iceberg REST Catalog로 흩어지거나, 뷰 정의가 엔진마다 따로 관리되는 상황이다.

Apache Gravitino는 이 단편화를 통합 메타데이터 제어면으로 해결하려는 Apache 프로젝트다. 단순한 카탈로그 어댑터가 아니라, 멀티엔진 Lakehouse 전체의 메타데이터·접근 제어·자격증명 관리를 하나의 API로 다루는 플랫폼을 목표로 한다.

2026년 6월 29일 공개된 버전 1.3.0은 세 가지 실질적 확장을 가져왔다. AWS Glue를 Gravitino 거버넌스 아래 편입, 논리 뷰를 멀티엔진에서 통합 관리, 계층 네임스페이스를 지원이다. 그리고 두 가지 중요한 breaking change가 있다.


핵심 변화 한눈에 보기

변화운영 의미
AWS GlueGlue Catalog 지원, Trino/Spark 어댑터 추가AWS 환경의 Hive·Iceberg 메타데이터를 Gravitino로 거버넌스 가능
논리 뷰Hive·Iceberg·Paimon 뷰 통합 관리, 뷰 수준 권한엔진별로 흩어지던 뷰 정의를 단일 제어면에서 관리
계층 네임스페이스다단계 중첩 네임스페이스 지원복잡한 조직 구조를 반영하는 카탈로그 계층 설계 가능
Iceberg REST Catalog연합(federated) REST Catalog, freshness-aware 테이블 로딩, 비동기 정리Iceberg 멀티클러스터 운영 안정성 향상
자격증명 갱신Vended credential 자동 갱신 지원장기 실행 Spark/Flink 잡의 자격증명 만료 문제 해결
Breaking: 자격증명민감한 카탈로그 속성이 load response에서 숨겨짐자격증명 API로 별도 조회 필요, 자동화 스크립트 영향 가능
Breaking: Docker 경로/root/gravitino/opt/gravitinoHelm 배포에서 경로 참조 수정 필요
Apache Gravitino 1.3.0: 멀티엔진 메타데이터 단일 제어면 쿼리 엔진 Spark Iceberg/Hive/Glue 카탈로그 Trino Iceberg/Hive/Glue 커넥터 Flink Iceberg/Paimon 카탈로그 모든 엔진 공통 Gravitino Catalog API로 통일된 카탈로그 접근 Apache Gravitino 1.3.0 카탈로그 관리 Hive Metastore Iceberg REST Catalog AWS Glue ← 1.3.0 신규 Delta Lake, Paimon, ClickHouse 논리 뷰 통합 관리 ← 1.3.0 신규 Hive / Iceberg / Paimon 뷰 뷰 수준 권한 제어 Java 클라이언트 + Web UI 인가 / 접근 제어 RBAC (role/privilege) 내장 IDP ← 1.3.0 신규 테이블·뷰 수준 권한 자격증명 vending API 계층 네임스페이스 ← 1.3.0 신규 org.team.project.schema 다단계 중첩 네임스페이스 Iceberg REST 연합 라우팅 자격증명 Vending (민감 속성 숨김 — 1.3.0 Breaking) s3-access-key-id 등 load response에서 제거 → /credential-vending API로 별도 조회, vended credential 자동 갱신 지원 Docker 경로 Breaking 변경 — 1.3.0 /root/gravitino → /opt/gravitino | Helm: env.GRAVITINO_HOME + extraVolumeMounts 경로 수정 필요 Table Maintenance Service(TMS): 파티션 레벨 유지보수 작업(OPTIMIZE·CLEAN·REFRESH) 프로그래밍 방식 실행 (1.2.0 도입, 1.3.0 성숙) 외부 카탈로그 / 스토리지 AWS Glue ← 1.3.0 신규 지원 Hive Metastore Iceberg REST Catalog 연합 지원 강화 Apache Paimon Delta Lake ClickHouse S3 / GCS / OSS 자격증명 vending으로 short-lived 토큰 발급
Apache Gravitino 1.3.0 — 멀티엔진 Lakehouse 메타데이터 제어면 아키텍처

1. AWS Glue 카탈로그 지원: 클라우드 메타데이터를 Gravitino 거버넌스 아래로

AWS Glue Data Catalog는 S3 기반 Lakehouse에서 가장 많이 쓰이는 관리형 메타데이터 스토어 중 하나다. 그러나 Glue를 직접 쓰는 팀은 몇 가지 제약을 경험한다. Glue 중심의 접근 제어는 IAM 정책에 의존해 세밀한 테이블/컬럼 수준 권한이 복잡하고, 멀티 카탈로그 환경에서 Glue와 Hive Metastore를 함께 쓸 때 통합 관점이 없다.

Gravitino 1.3.0은 AWS Glue를 Gravitino 카탈로그의 하나로 등록하고 관리할 수 있는 Glue Catalog 플러그인을 추가했다. 그리고 Spark와 Trino에서 이 Gravitino-Glue 카탈로그를 네이티브처럼 쓸 수 있는 커넥터 어댑터도 함께 제공한다.

이 구조에서 실용적인 이득은 세 가지다.

첫째, Glue의 Hive 형식 테이블과 Iceberg 테이블을 같은 거버넌스 정책으로 다룰 수 있다. 기존에는 Glue 위의 Iceberg와 Hive를 서로 다른 카탈로그로 취급하는 경우가 많았다. Gravitino는 이 두 형식을 동일한 권한·감사 로그·lineage 모델 아래 놓는다.

둘째, Gravitino의 자격증명 vending이 Glue 카탈로그에도 적용된다. 장기 AWS 자격증명을 직접 노출하는 대신, Gravitino가 S3 접근용 short-lived 토큰을 발급한다.

셋째, 멀티 카탈로그 환경에서 Glue, Hive Metastore, Iceberg REST Catalog를 단일 API로 조회할 수 있다. Trino가 Glue의 테이블과 Hive Metastore의 테이블을 같은 Gravitino 카탈로그 API로 쿼리하는 구성이 가능해진다.


2. 논리 뷰 통합 관리: 엔진마다 흩어지던 뷰를 하나의 정의로

멀티엔진 환경에서 뷰는 조용한 골칫거리였다. Spark는 Iceberg 뷰를 알고, Trino는 자체 뷰 문법을 쓰며, Hive 뷰는 HiveQL에 묶여 있다. 같은 논리적 집계를 세 개의 엔진에서 각자 뷰로 정의하거나, 특정 엔진 뷰에 다른 엔진이 접근하지 못하는 상황이 생긴다.

Gravitino 1.3.0은 논리 뷰를 통합 메타데이터 엔티티로 다루는 통일 모델을 도입했다.

구체적으로는 Hive, Apache Iceberg, Apache Paimon 위에서 뷰를 생성·조회·수정·삭제할 수 있는 API가 추가됐다. 이 API는 Java 클라이언트, Python 클라이언트, REST API 모두에서 동일하게 접근 가능하고, Web UI에서도 뷰를 테이블처럼 확인하고 권한을 관리할 수 있다.

특히 뷰 수준 권한 제어는 실용적인 이득이다. 기존에는 뷰에 대한 접근을 제어하려면 기반 테이블의 권한을 다루는 우회 방법을 써야 했다. 이제 Gravitino에서 뷰 자체에 대해 SELECT, MODIFY 권한을 역할 단위로 부여할 수 있다.

또한 Iceberg 뷰를 Gravitino가 관리하는 것은 Iceberg REST Catalog와의 연동에서도 의미가 있다. Iceberg 1.1 이후 뷰를 REST Catalog에 저장하는 표준 경로가 생겼는데, Gravitino가 이 경로를 중개하면 멀티 클러스터·멀티 엔진 환경에서 일관된 뷰 상태를 유지할 수 있다.


3. 계층 네임스페이스: 조직 구조를 카탈로그 계층으로

기존 Gravitino는 주로 catalog.schema.table 3계층 구조를 지원했다. 이는 대부분의 SQL 엔진이 가정하는 구조이기도 하다.

그러나 대규모 멀티팀 환경에서는 더 깊은 계층이 필요하다. org.bu.team.project.schema.table 같은 구조다. AWS Glue의 데이터베이스/테이블 구조나 일부 Iceberg REST Catalog 구현은 여러 수준의 중첩 네임스페이스를 허용한다.

Gravitino 1.3.0은 다단계 중첩 네임스페이스를 지원하도록 내부 메타데이터 모델을 확장했다.

실용적으로는 두 가지 시나리오에서 중요하다.

첫 번째는 Iceberg REST Catalog 연합 라우팅이다. 계층 네임스페이스의 상위 레벨을 기준으로 요청을 다른 Iceberg REST Catalog 인스턴스로 라우팅하는 연합 구조가 가능해진다. 예를 들어 eu-west.orders.daily_summary라는 테이블 요청이 유럽 리전의 Iceberg REST Catalog로 자동 라우팅될 수 있다.

두 번째는 데이터 플랫폼 내 조직 거버넌스다. 사업부, 팀, 프로젝트, 환경(dev/stg/prd)을 계층 구조로 표현하고 각 계층에 접근 정책을 적용할 수 있다. 최상위 bu 레벨에서 정의한 마스킹 정책이 하위 모든 테이블에 적용되는 식이다.


4. 자격증명 Vending 강화와 Breaking Change

Vended credential 자동 갱신

Gravitino의 자격증명 vending은 1.0 시절부터 있었다. 장기 자격증명 대신 Gravitino가 short-lived 토큰을 발급하고, Spark/Trino/Flink 잡은 이 토큰으로 S3/OSS/GCS에 접근한다.

1.3.0에서 추가된 것은 vended credential 자동 갱신이다. 장기 실행 Spark 잡은 처음 받은 토큰이 만료될 때 Gravitino에 재발급을 요청한다. 이전에는 잡이 도중에 자격증명 만료로 실패하는 경우가 있었다.

Breaking: 민감 카탈로그 속성 숨김

1.3.0에서 운영자가 반드시 알아야 할 breaking change가 있다.

s3-access-key-id, s3-secret-access-key, oss-access-key-id, oss-secret-access-key 같은 민감한 카탈로그 속성이 카탈로그 로드 응답에서 사라진다.

이전에는 GET /api/metalakes/{metalake}/catalogs/{catalog} 응답에 이 속성이 포함됐다. 1.3.0부터는 이 값이 응답에서 제거된다. 자격증명 vending API를 통해 별도로 조회해야 한다.

이 변화에 영향 받는 곳을 확인해야 한다.

  • Gravitino REST API 응답에서 카탈로그 속성을 읽어 자격증명을 추출하는 자동화 스크립트
  • 카탈로그 속성을 로컬에 캐시해 두고 재사용하는 Spark 커넥터 설정
  • 감사나 디버깅 목적으로 카탈로그 설정을 덤프하는 운영 도구

의도적인 보안 강화다. 자격증명이 API 응답에 평문으로 포함되는 경로를 제거하고, 접근 제어가 적용된 자격증명 vending 경로만 남기는 것이다.


5. Docker 경로 Breaking Change: 업그레이드 전 확인 필수

두 번째 breaking change는 Docker 이미지다.

Gravitino 1.3.0부터 컨테이너 내 Gravitino 설치 경로가 /root/gravitino에서 /opt/gravitino로 변경됐다.

영향을 받는 배포 설정을 점검해야 한다.

Helm 배포:

# 변경 전
env.GRAVITINO_HOME = /root/gravitino

# 변경 후
env.GRAVITINO_HOME = /opt/gravitino

extraVolumeMounts 경로 (예: 로그 마운트):

# 변경 전
mountPath: /root/gravitino/logs

# 변경 후
mountPath: /opt/gravitino/logs

Init Container나 사이드카가 Gravitino 프로세스 경로를 참조하는 경우:

/root/gravitino/conf → /opt/gravitino/conf
/root/gravitino/logs → /opt/gravitino/logs

이 변경이 중요한 이유는, 기존 Helm 차트나 Kubernetes 배포 매니페스트를 수정하지 않고 1.3.0 이미지로 업그레이드하면 컨테이너가 시작 시 설정 파일을 찾지 못해 실패할 수 있기 때문이다.


6. Iceberg REST Catalog 연합 지원 강화

Gravitino는 Iceberg REST Catalog 서버로서도 동작할 수 있다. Spark나 Trino가 type=rest로 Gravitino를 Iceberg 카탈로그로 지정하면, Gravitino가 실제 메타데이터 스토어를 가리키는 REST 서버 역할을 한다.

1.3.0에서 여기에 두 가지가 추가됐다.

Freshness-aware 테이블 로딩: Gravitino가 캐시한 테이블 메타데이터의 신선도(freshness)를 기반으로 실제 메타데이터 스토어와 동기화 여부를 결정한다. 쿼리 성능(캐시 히트)과 메타데이터 일관성 사이의 균형을 설정으로 조절할 수 있다.

비동기 정리: 삭제된 테이블, 오래된 스냅샷, 미사용 메타데이터 파일의 정리 작업을 비동기로 처리한다. 이전에는 이 작업이 동기적으로 이뤄져 카탈로그 응답 지연의 원인이 됐다.


7. 업그레이드 체크리스트

Gravitino 1.2.x → 1.3.0 업그레이드 전 확인해야 할 항목이다.

  • 자격증명 자동화 스크립트 점검: 카탈로그 로드 응답에서 s3-access-key-id 등을 직접 읽는 코드가 있다면, /credential-vending API 호출로 교체한다.
  • Helm 차트 경로 수정: env.GRAVITINO_HOME, extraVolumeMounts 경로를 /opt/gravitino로 업데이트한다.
  • Spark/Trino 카탈로그 설정 검토: gravitino.fileset.filesystem.providers 등 경로 참조가 Docker 경로를 하드코딩한 경우 수정한다.
  • Iceberg REST Catalog 연합 라우팅 설정: 계층 네임스페이스와 연합 라우팅을 함께 쓰려면 gravitino.iceberg-rest.catalog 매핑 설정을 새 다단계 네임스페이스 형식에 맞게 검토한다.
  • AWS Glue 카탈로그 추가 계획: 기존에 Spark/Trino에서 Glue를 직접 쓰던 팀은 Gravitino Glue 카탈로그로 전환 시 Gravitino 측 RBAC 정책을 먼저 설계하고, 기존 IAM 정책과 중복 관리가 발생하지 않도록 경계를 정리한다.
  • 뷰 관리 전환 검토: 엔진별로 직접 관리하던 Hive/Iceberg/Paimon 뷰를 Gravitino API로 통합할 계획이라면, 기존 뷰 정의를 Gravitino 메타데이터 모델에 맞게 마이그레이션하는 방안을 먼저 검증한다.

마무리

Apache Gravitino 1.3.0은 "멀티엔진 Lakehouse 메타데이터 통합"이라는 목표를 실용적으로 확장했다.

AWS Glue 지원은 클라우드 네이티브 팀이 Glue를 그대로 두고도 Gravitino의 통합 거버넌스 아래 편입할 수 있는 경로를 만들었다. 논리 뷰 통합 관리는 엔진별로 흩어지던 뷰 정의를 단일 권한 모델로 다루게 해준다. 계층 네임스페이스는 대규모 조직의 복잡한 데이터 경계를 카탈로그 구조로 표현할 수 있게 한다.

두 가지 breaking change는 운영자가 주의해야 한다. 자격증명 숨김은 보안 강화이지만 기존 자동화 스크립트를 깨뜨린다. Docker 경로 변경은 Helm 배포에서 반드시 명시적으로 처리해야 한다.

Gravitino가 아직 완성된 플랫폼은 아니다. 특히 스트리밍 카탈로그(Kafka Connect, Flink 카탈로그)와의 통합, Spark 이외 엔진의 credential vending 완성도, 대규모 환경에서의 성능은 계속 검증이 필요한 부분이다. 그러나 멀티엔진 Lakehouse를 단일 제어면으로 운영하려는 팀에게 Gravitino 1.3.0은 AWS 환경과 뷰 거버넌스 두 축을 실질적으로 강화한 릴리스다.

References

  • Apache Gravitino 공식 블로그, "Apache Gravitino 1.3.0 Release Notes" (2026-06-29): https://gravitino.apache.org/blog/gravitino-1-3-0-release-notes/
  • Apache Gravitino GitHub Releases, v1.3.0: https://github.com/apache/gravitino/releases/tag/v1.3.0
  • Datastrato 블로그, "Apache Gravitino™ 1.2: From Metadata Catalog to Operational Platform": https://datastrato.ai/blog/gravitino-1-2-0-introduction/
  • Apache Gravitino Docs, "Iceberg REST catalog service": https://gravitino.apache.org/docs/next/iceberg-rest-service/
  • Apache Gravitino Docs, "Credential Vending": https://gravitino.apache.org/docs/0.9.0-incubating/security/credential-vending/
  • DEV Community, "Configuring Gravitino Iceberg REST Catalog Server": https://dev.to/gravitino/configuring-gravitino-iceberg-rest-catalog-server-19i0