Apache Iceberg란 무엇인가요?

Apache Iceberg는 데이터 레이크에 저장된 대규모 분석 데이터 세트를 위해 설계된 오픈소스 테이블 형식입니다. 또한 기존 데이터 레이크 테이블 형식의 많은 제한사항을 해결하여 데이터 레이크하우스 아키텍처에 향상된 안정성, 성능, 유연성을 제공합니다. Cloud Storage와 같은 데이터 레이크 스토리지 위에 위치한 지능형 레이어로 생각하면 됩니다. 방대한 데이터 세트에 데이터베이스와 유사한 기능을 제공합니다. Iceberg는 단순히 파일을 관리하는 것이 아니라 테이블을 데이터 파일의 컬렉션으로 관리하여 스키마 변경, 시간 이동, 보다 효율적인 쿼리 계획과 같은 기능을 지원합니다. 이를 통해 데이터 분석가, 데이터 과학자, 엔지니어는 데이터 레이크의 데이터를 더욱 쉽고 효율적으로 처리하고 분석 워크로드를 늘릴 수 있습니다.

Apache Iceberg의 용도는 무엇인가요?

Apache Iceberg는 최신 데이터 아키텍처, 특히 데이터 레이크를 활용하는 아키텍처 내에서 다양한 목적을 수행합니다. 주요 사용 사례는 다음과 같습니다.

  • 신뢰할 수 있는 데이터 레이크 지원: Iceberg는 작업이 원자성, 일관성, 격리성, 내구성(ACID)을 갖도록 보장합니다. 이렇게 하면 기존의 파일 기반 접근 방식에서 발생할 수 있는 데이터 손상과 불일치가 방지됩니다.
  • 스키마 변경 지원: 스키마 변경으로 인해 어려움을 겪는 경우가 많았던 이전 테이블 형식과 달리 Iceberg는 원활하고 안전한 스키마 변경을 지원합니다. 진행 중인 쿼리를 중단하거나 비용이 많이 드는 데이터 마이그레이션 없이 열을 추가, 삭제 또는 이름을 바꿀 수 있습니다.
  • 시간 이동 기능 제공: Iceberg는 테이블 스냅샷의 기록을 유지하여 사용자가 특정 시점에 존재했던 데이터를 쿼리할 수 있도록 합니다. 이는 감사, 디버깅, 분석 재현에 매우 유용합니다.
  • 쿼리 성능 최적화: Iceberg의 메타데이터 관리를 통해 쿼리 엔진이 불필요한 데이터 파일을 효율적으로 프루닝하여 특히 대규모 데이터 세트에서 쿼리 실행을 크게 가속화할 수 있습니다.
  • 데이터 거버넌스 지원: 테이블 버전 관리 및 메타데이터 관리와 같은 기능은 데이터 변경에 대한 명확한 감사 추적을 제공하여 데이터 거버넌스 및 규정 준수 노력을 강화합니다.
  • 데이터 레이크하우스 빌드: Iceberg는 데이터 레이크의 확장성과 유연성을 데이터 웨어하우스의 데이터 관리 기능과 결합한 데이터 레이크하우스를 빌드하기 위한 기본 구성요소입니다. 동일한 데이터에서 분석 워크로드와 운영 워크로드 모두를 실행할 수 있습니다.
  • 머신러닝을 위한 데이터 안정성 개선: Iceberg에서 제공하는 일관되고 버전 관리된 데이터 세트는 안정적인 머신러닝 모델을 학습시키고 배포하는 데 매우 중요합니다. 데이터 과학자는 이전 데이터 스냅샷을 사용하여 실험을 쉽게 재현할 수 있습니다.

Apache Iceberg는 어떻게 작동하나요?

Apache Iceberg는 기본적으로 데이터 레이크의 실제 데이터 파일 위에 있는 메타데이터 레이어를 도입하여 작동합니다. 이 메타데이터는 기존의 파일 기반 시스템보다 더 체계적이고 강력한 방식으로 테이블의 구조와 콘텐츠를 추적합니다. 주요 메커니즘을 다음과 같이 세분화할 수 있습니다.

  1. 메타데이터 관리: Iceberg는 테이블의 스키마, 파티션, 데이터 파일의 위치를 설명하는 메타데이터 파일을 유지관리합니다. 이러한 메타데이터 파일은 일반적으로 데이터와 함께 데이터 레이크에 저장됩니다.
  2. 카탈로그: Iceberg는 카탈로그를 사용하여 각 테이블의 현재 메타데이터 위치를 추적합니다. 이 카탈로그는 Hive Metastore, 파일 시스템 기반 구현 또는 클라우드 기반 카탈로그 서비스와 같은 서비스일 수 있습니다.
  3. 테이블 스냅샷: 테이블에 변경사항이 적용될 때마다(예: 데이터 추가, 데이터 삭제, 스키마 변경) Iceberg는 테이블의 메타데이터에 대한 새로운 스냅샷을 생성합니다. 이러한 스냅샷은 변경할 수 없으며 테이블 상태의 이전 기록을 제공합니다.
  4. 매니페스트 목록 및 매니페스트 파일: 각 스냅샷은 매니페스트 목록을 가리키며, 이 매니페스트 목록은 하나 이상의 매니페스트 파일을 나열합니다. 매니페스트 파일에는 위치, 파티션 값, 통계(행 수 및 값 범위 등)를 포함한 개별 데이터 파일에 대한 메타데이터가 포함됩니다.
  5. 데이터 파일: 데이터 레이크에 데이터를 저장하는 실제 Parquet, ORC 또는 Avro 파일입니다. Iceberg의 메타데이터는 이러한 파일과 테이블 내의 조직을 추적합니다.

Apache Iceberg 아키텍처

Apache Iceberg의 아키텍처에는 함께 작동하는 여러 주요 구성요소가 포함됩니다.

  • 데이터 레이크 스토리지: 이는 Cloud Storage와 같은 기본 스토리지 레이어로, 실제 데이터 파일(Parquet, ORC 또는 Avro 형식)과 Iceberg의 메타데이터 파일이 저장됩니다.
  • Iceberg 카탈로그: Iceberg 테이블의 메타데이터 포인터를 관리하는 구성요소입니다. 각 테이블의 메타데이터 현재 버전을 추적하는 중앙 레지스트리 역할을 합니다. 일반적인 카탈로그 구현에는 다음이 포함됩니다.
  • Hive Metastore: 널리 사용되는 메타데이터 저장소로, Hadoop 기반 시스템과 함께 사용되는 경우가 많습니다.
  • 파일 시스템 카탈로그: 카탈로그 정보가 데이터 레이크 파일 시스템에 직접 저장되는 간단한 구현입니다.
  • 클라우드 기반 카탈로그 서비스: 메타데이터를 저장하고 관리하기 위해 클라우드 제공업체에서 제공하는 관리형 서비스입니다.
  • Iceberg 메타데이터: 테이블의 구조와 데이터를 추적하는 여러 레이어의 메타데이터 파일로 구성됩니다.
  • 테이블 메타데이터 파일: 이 파일은 현재 매니페스트 목록을 가리키며 스키마 및 파티셔닝 사양과 같은 테이블에 대한 개요 정보가 포함되어 있습니다.
  • 매니페스트 목록: 이 파일은 테이블의 특정 스냅샷에 있는 데이터 파일에 대한 메타데이터를 포함하는 매니페스트 파일을 나열합니다.
  • 매니페스트 파일: 이러한 파일에는 위치, 파티션 값, 통계 등 개별 데이터 파일에 대한 자세한 정보가 포함되어 있습니다.
  • 쿼리 엔진 및 처리 프레임워크: Iceberg 테이블과 상호작용하여 데이터를 읽고 쓰는 도구입니다. 이러한 엔진은 Iceberg의 메타데이터를 활용하여 쿼리 계획 및 실행을 최적화합니다.
  • 컴퓨팅 리소스: 쿼리 엔진과 처리 프레임워크를 실행하는 기본 인프라(예: 가상 머신 및 컨테이너)입니다.

Apache Iceberg 및 데이터 레이크

Apache Iceberg는 안정적이고 성능이 우수한 테이블 형식을 추가하여 데이터 레이크의 기능을 크게 향상합니다. Iceberg와 같은 테이블 형식이 없는 기존 데이터 레이크에서는 데이터가 단순히 파일 컬렉션인 경우가 많습니다. 이로 인해 다음과 같은 문제가 발생할 수 있습니다.

  • 스키마 변경 부족: 데이터 구조를 변경하는 작업이 복잡하고 오류가 발생하기 쉽습니다.
  • 읽기 불일치: 동시 쓰기 작업으로 인해 쿼리에서 이전 데이터와 새 데이터가 혼합되어 읽힐 수 있습니다.
  • 쿼리 성능 저하: 쿼리 엔진을 안내할 메타데이터가 없으면 쿼리 엔진이 데이터의 상당 부분을 스캔해야 하는 경우가 많습니다.
  • 데이터 관리의 어려움: 시간 이동 및 버전 관리와 같은 기능을 쉽게 사용할 수 없습니다.

Iceberg는 데이터 레이크 위에 구조화된 레이어를 제공하여 이러한 제한사항을 해결합니다. 데이터 레이크에 데이터베이스와 유사한 기능을 제공하여 더 강력하고 관리하기 쉬운 데이터 레이크하우스로 변환합니다. 풍부한 메타데이터가 포함된 파일의 컬렉션으로 테이블을 관리하는 Iceberg를 사용하면 다음과 같은 이점이 있습니다.

  • 신뢰할 수 있고 일관적인 데이터 액세스: ACID 속성으로 데이터 무결성 보장
  • 효율적인 쿼리 처리: 메타데이터 기반 데이터 건너뛰기 및 필터링으로 쿼리 가속화
  • 유연한 데이터 관리: 스키마 변경 및 시간 이동으로 데이터 유지보수 및 분석 간소화
  • 상호 운용성: Iceberg는 데이터 레이크에서 일반적으로 사용되는 다양한 쿼리 엔진 및 처리 프레임워크와 호환되도록 설계됨

Google Cloud로 비즈니스 문제 해결

신규 고객에게는 Google Cloud에서 사용할 수 있는 $300의 무료 크레딧이 제공됩니다.
Google Cloud 영업 전문가에게 고유한 문제에 대해 자세히 논의해 보세요.

Apache Iceberg의 과제

Apache Iceberg는 상당한 이점을 제공하지만 고려해야 할 몇 가지 과제도 있습니다.

복잡성 증가

Iceberg를 도입하면 데이터 레이크에 추상화 레이어가 추가되어 전체 시스템의 복잡성이 높아질 수 있습니다. 메타데이터 레이어를 이해하고 관리하려면 특정 지식이 필요합니다.

카탈로그 종속 항목

Iceberg는 테이블 메타데이터 위치를 관리하기 위해 Hive Metastore와 같은 카탈로그 서비스를 사용합니다. 카탈로그의 가용성과 성능은 전체 시스템에 영향을 미칠 수 있습니다.

학습 곡선

팀은 Iceberg와 관련된 개념과 권장사항을 학습해야 하며, 이를 위해 교육 및 역량 강화가 필요할 수 있습니다.

오버헤드 발생 가능성

Iceberg는 많은 경우 쿼리 성능을 최적화하지만 메타데이터 관리 자체가 특히 매우 작은 데이터 세트 또는 매우 간단한 쿼리의 경우 오버헤드를 유발합니다.

도구 성숙도

Iceberg 생태계는 빠르게 성장하고 있지만 일부 도구와 통합은 기존의 데이터 웨어하우징 기술에 비해 성숙도가 낮을 수 있습니다.

마이그레이션 작업

기존 데이터 레이크를 Iceberg로 마이그레이션하는 것은 데이터 재작성과 기존 데이터 파이프라인 변경이 필요할 수 있는 어려운 작업일 수 있습니다.

Google Cloud 및 Apache Iceberg

Google Cloud는 Apache Iceberg를 활용하기 위한 강력한 환경을 제공합니다. 여러 Google Cloud 서비스가 Iceberg와 원활하게 통합되어 사용자가 강력하고 확장 가능한 데이터 레이크하우스 솔루션을 빌드할 수 있습니다.

다음 단계 수행

$300의 무료 크레딧과 20여 개의 항상 무료 제품으로 Google Cloud에서 빌드하세요.

Google Cloud