Apache Iceberg이란 무엇인가요?

사무실에서 디지털 태블릿을 사용하는 히스패닉계 사업가

작성자

Dave Bergmann

Senior Staff Writer, AI Models

IBM Think

Apache Iceberg이란 무엇인가요?

Apache Iceberg는 대규모 분석 테이블을 위한 고성능 오픈 소스 형식으로, 빅 데이터에 SQL 테이블을 사용하고 이러한 테이블을 Apache Spark, Trino, Flink, Presto, Hive 및 Impala와 같은 엔진과 안전하게 통합할 수 있도록 지원합니다.

Iceberg는 오픈 테이블 형식 사양 외에도 스토리지 엔진, 쿼리 엔진 및 실행 엔진이 해당 형식을 따르는 테이블과 원활하게 상호 작용할 수 있도록 하는 일련의 API 및 라이브러리로 구성되어 있습니다.

Iceberg 테이블 형식은 보통 다른 테이블 형식에서는 사용할 수 없는 기능을 제공할 수 있기 때문에 빅 데이터 에코시스템의 필수적인 부분이 되었습니다. 각 테이블에 보관된 수많은 메타데이터를 사용하는 Iceberg는 고비용의 테이블 재작성 또는 테이블 마이그레이션 없이도 스키마 진화, 파티션 진화 및 테이블 버전 롤백을 허용합니다. 그리고 스토리지 시스템에 전혀 구애받지 않으며, 여러 데이터 소스를 지원하며, 파일 시스템 종속성이 없습니다.

2017년에 Netflix와 Apple의 데이터 엔지니어들이 원래 Apache Hive의 단점을 보완하기 위해 만든 Iceberg는 이듬해에 오픈 소스로 공개되어 Apache 소프트웨어 재단에 기부되었습니다. 그리고 2020년에 최상위 Apache 프로젝트가 되었습니다.

Apache Iceberg의 속도, 효율성, 안정성 및 전반적인 사용자 친화성은 모든 규모에서 데이터 처리를 간소화하고 조정하는 데 도움이 됩니다. 이러한 장점으로 인해 IBM® watsonx.data, Netezza 및 Db2 Warehouse를 비롯한 여러 선도적인 데이터 웨어하우스, 데이터 레이크 및 데이터 레이크하우스에서 선호하는 테이블 형식이 되었습니다.

트랙에서 굴러가는 공의 3D 디자인

최신 AI 뉴스+인사이트


주간 Think 뉴스레터에서 전문가들이 선별한 AI, 클라우드 등에 관한 인사이트와 소식을 살펴보세요. 

왜 Apache Iceberg를 사용할까요?

Iceberg는 원자성, 일관성, 격리성 및 내구성을 보장하여 정확성을 유지하는 데이터 교환인 ACID 트랜잭션을 가능하게 하는 몇 안 되는 오픈 소스 테이블 형식 중 하나입니다.

Iceberg는 대규모 데이터 레이크 환경에서 Apache Hive 테이블의 실질적인 한계를 해결하려는 노력으로 시작되었습니다. Apache Iceberg 프로젝트의 PMC 의장이자 Netflix의 (전)선임 엔지니어인 라이언 블루(Ryan Blue)는 "다양한 서비스와 엔진이 Hive 테이블을 사용하고 있었습니다. 하지만 문제는 정확성을 보장할 수 없다는 것이었습니다. 우리에게는 원자적 트랜잭션이 없었습니다."라고 2021년 컨퍼런스에서 말했습니다. "때때로 한 시스템의 변경으로 인해 다른 시스템이 잘못된 데이터를 얻게 되었고, 이러한 종류의 문제로 인해 우리는 안전을 위해 이러한 서비스를 사용하지 않고 테이블을 변경하지 않았습니다."1

Apache Hive는 Apache Hadoop 클러스터를 SQL에서 접근할 수 있는 관계형 데이터베이스와 유사하게 작동시키기 위한 수단으로 시작되었습니다. 정적 데이터에는 효과적으로 작동하지만, 변화하는 데이터 세트에는 제대로 적응하지 못하기 때문에 여러 애플리케이션과 사용자 간에 변경 사항을 수동으로 조정해야 합니다. 그렇지 않으면 대규모 데이터 세트가 손상되고 그로 인해 부정확성이 발생할 위험이 있습니다.

동적 환경에서 정확성을 보장하기 위해 Iceberg는 모든 데이터 트랜잭션이 네 가지 ACID 속성을 모두 나타내도록 설계되었습니다.

원자성

데이터에 대한 모든 변경은 마치 단일 작업인 것처럼 수행됩니다. 즉, 모든 변경이 실행되거나 아무 것도 실행되지 않습니다. 예를 들어, 금융 데이터 거래에서 원자성은 한 계정에서 인출이 이루어지면 다른 계정으로 그에 상응하는 금액이 입금되도록 보장합니다.

일관성

트랜잭션 전의 전체 데이터 상태와 트랜잭션 후의 데이터 상태 사이에 모순이 없습니다. 금융 거래의 예를 계속 이어서 설명하자면, 일관성은 두 계좌 사이에 존재하는 자금의 합이 거래 전과 거래 후가 동일하도록 보장합니다.

격리

모든 거래의 중간 상태는 다른 거래에 보이지 않으며, 동시 거래(동일한 데이터 세트에서 동시에 작동하는 거래)는 직렬화된 것처럼 처리됩니다. 이 금융 거래에서 격리를 사용하면 다른 거래에서 이체된 자금을 인출 계좌 또는 입금 계좌에서 볼 수 있지만, 둘 다에서 볼 수는 없습니다(또는 어느 쪽도 볼 수 없음).

내구성

트랜잭션이 성공적으로 완료되면, 시스템 오류가 발생하더라도 모든 데이터 변경 사항이 유지됩니다. 앞의 금융 예시에서, 이는 트랜잭션 직후에 시스템 전체에 정전이 발생하더라도 해당 트랜잭션이 완전한 상태로 유지됨을 의미합니다.

Apache Iceberg, Delta Lake, Apache Hudi 비교

Apache Iceberg 테이블 형식은 ACID 트랜잭션을 제공하는 다음의 2가지 다른 오픈 소스 데이터 기술과 흔히 비교됩니다. 원래 Databricks에서 만든 최적화된 스토리지 계층인 Delta Lake는 파일 기반 트랜잭션 로그와 확장 가능한 메타데이터 처리를 통해 Parquet 데이터 파일을 확장하며, Apache Hudi("Hadoop Upserts Deletes and Incrementals"의 약자)는 Uber에서 2016년에 처음 개발되었습니다.

Synvert에서 실시한 2022년 연구에서는 이 세 가지 기술을 벤치마킹하는 데 사용할 무작위 데이터를 생성하여 AWS S3 버킷에 JSON 형식으로 저장했습니다. 테스트 결과, Iceberg의 최적화된 테이블 형식은 테스트한 모든 지표에서 Delta Lake와 Apache Hudi보다 뛰어난 성능을 제공하는 것으로 입증되었습니다.2

  • 스토리지: Iceberg 테이블의 결과 파일 크기는 Delta Lake 또는 Hudi보다 훨씬 작아 스토리지 최적화에 큰 이점을 제공합니다.
     

  • 삽입 작업: 삽입 작업의 경우에도 Iceberg는 가장 빠른 성능, 즉 가장 짧은 런타임을 보였습니다. Iceberg와 Delta Lake는 모두 Hudi보다 훨씬 빨랐습니다.
     

  • 업데이트 작업: 업데이트 작업은 Iceberg가 Delta Lake 및 Hudi보다 훨씬 빨랐습니다. 특히, 다른 제품과 달리 Iceberg의 런타임은 총 레코드 수에 따라 크게 증가하지 않았습니다. 이번 연구에서 테스트한 최대 워크로드인 5억 개의 레코드에서 Iceberg는 Delta Lake보다 거의 10배 더 빨랐습니다.
     

  • 제거 작업: Iceberg는 제거 작업에서도 다른 두 솔루션보다 몇 배 더 빨랐습니다.

AI 아카데미

데이터 관리가 생성형 AI 구현의 비결일까요?

생성형 AI를 성공적으로 사용하기 위해 고품질 데이터가 필수적인 이유를 알아보세요.

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

Iceberg는 메타데이터 파일의 3계층 구조를 구현하여 다양한 파일 형식과 지속적인 변경 사항에서 테이블 데이터의 정확성과 조정을 보장합니다.

JavaPython으로 작성되고 Scala API에서도 제공되는 Iceberg는 Apache Parquet, Apache Avro , Apache ORC 등 다양한 빅 데이터 파일 형식을 지원합니다. 그리고 파일 형식 및 공급 업체에 구애받지 않는 방식으로 기존 데이터베이스의 SQL 테이블 기능과 유사한 기능을 제공하여, 여러 엔진이 동일한 데이터 세트에서 작동할 수 있도록 합니다. 

Iceberg 테이블의 아키텍처는 Iceberg 카탈로그, 메타데이터 계층데이터 계층의 3가지 계층으로 구성됩니다.

Iceberg 카탈로그

빙산의 일각이 수면 위에 있는 것처럼, Iceberg 카탈로그 자체는 메타데이터 계층과 데이터의 맨 위에 위치합니다. 이는 지정된 테이블의 이름을 현재 메타데이터 파일의 위치에 매핑하는 최신(또는 '현재') 메타데이터 포인터를 저장합니다. Iceberg는 기본 제공 카탈로그 외에도 Hive MetaStore 또는 AWS Glue와 같은 다른 카탈로그 프레임워크를 지원합니다.

Iceberg 카탈로그 수준에서 이루어지는 작업은 진행 중인 트랜잭션의 정확성을 보장하는 데 필수적이기 때문에 원자적입니다.

따라서 쿼리 엔진은 Iceberg 카탈로그에서 모든 SELECT 쿼리를 시작하며, 이 카탈로그는 쿼리 엔진이 읽으려는 테이블에 대한 현재 메타데이터 파일의 위치를 제공합니다.

메타데이터 계층

Iceberg 메타데이터 계층은 메타데이터 파일, 매니페스트 목록 및 매니페스트 파일로 구성됩니다.

메타데이터 파일

메타데이터 파일은 테이블의 스키마, 파티션 정보, 현재 스냅샷 및 이전 상태의 스냅샷을 포함해 테이블의 메타데이터를 저장합니다. Iceberg 카탈로그의 테이블 항목에서 현재 메타데이터 파일을 가리키면 쿼리 엔진은 [current-snapshot-id] 값을 사용하여 [snapshots] 배열에서 해당 항목을 찾습니다. 여기에서 테이블의 매니페스트 목록을 찾아서 열 수 있습니다.

매니페스트 목록

매니페스트 목록은 단순히 매니페스트 파일의 목록이며, 그 안의 각 데이터 파일에 대한 중요한 정보(예: 위치, 연결된 스냅샷 및 속한 파티션)입니다. 이 단계에서는 특정한 최적화 및 필터링 기능을 사용할 수 있습니다.

매니페스트 파일

매니페스트 파일은 데이터 파일 및 관련 세부 정보, 메타데이터 및 통계를 추적합니다. 여기에서 바로 파일 수준에서 데이터를 추적할 수 있는 Iceberg 테이블 형식의 근본적인 장점이 비롯됩니다. 이 단계에서 각 [data-file] 개체의 [file-path] 값을 사용하여 해당 파일을 찾고 열 수 있습니다.

데이터 계층

데이터 계층은 그 이름에서 알 수 있듯이 메타데이터 계층 아래에 있으며, 최종 파일 자체를 포함합니다.

Apache Iceberg의 주요 기능

Apache Iceberg는 데이터 관리를 개선하고 간소화하는 데 유용한 여러 기능을 제공합니다.

숨겨진 파티셔닝

Iceberg는 파티셔닝과 쿼리의 모든 세부 사항을 내부에서 처리합니다. Iceberg의 숨겨진 파티셔닝은 사용자가 테이블을 쿼리할 때 파티션 레이아웃 정보를 제공해야 하는 수고를 덜어 줍니다. 사용자는 정확한 쿼리 결과를 얻기 위해, 파티션 열을 직접 유지 관리하거나 물리적 테이블 레이아웃을 이해할 필요가 없습니다.

이는 Iceberg 파티셔닝을 매우 사용자 친화적으로 만들 뿐만 아니라, 미리 작성된 쿼리를 중단하지 않고도 시간이 지남에 따라 파티션 레이아웃을 변경할 수 있도록 합니다. 파티션 사양이 진화하는 경우에도, 테이블의 데이터(및 메타데이터)는 영향을 받지 않습니다. 진화 후 테이블에 기록된 새 데이터만 새 사양으로 파티션되며, 이 새 데이터에 대한 메타데이터는 별도로 보관됩니다.

스키마 진화

Iceberg는 스키마 진화를 기본적으로 지원합니다. 이를 통해 사용자는 복잡한 데이터 마이그레이션 없이 테이블 스키마를 수정할 수 있으므로, 진화하는 데이터 구조에 대한 적응을 크게 간소화할 수 있습니다.

시간 여행

Iceberg를 사용하면 사용자는 여러 시점의 Iceberg 데이터 스냅샷을 통해 시간을 되돌릴 수 있습니다. 감사, 디버깅, 규정 준수 확인 등 다양한 사용 사례에 유용한 기능입니다.

데이터 압축 및 필터링

Iceberg는 쿼리 성능을 최적화하는 데 도움이 되는 다양한 인덱싱 기능을 제공합니다. 예를 들어, 메타데이터 오버헤드를 줄이기 위해 더 작은 파일을 더 큰 파일로 병합하는 압축 옵션 그리고 쿼리 실행 중에 불필요한 데이터 읽기를 줄이기 위한 Bloom 필터가 있습니다.

관련 솔루션
데이터 관리 소프트웨어 및 솔루션

탁월한 고객 및 직원 경험을 제공하기 위해 데이터 사일로를 제거하고, 복잡성을 줄이며, 데이터 품질을 개선하는 데이터 전략을 구축하세요.

데이터 관리 솔루션 살펴보기
IBM watsonx.data™

watsonx.data를 사용하면 오픈, 하이브리드 및 관리형 데이터 저장소를 통해 데이터의 위치와 관계없이 모든 데이터로 분석과 AI를 확장할 수 있습니다.

watsonx.data 알아보기
데이터 및 분석 컨설팅 서비스

IBM Consulting을 통해 엔터프라이즈 데이터의 가치를 실현하여 비즈니스 이점을 제공하는 인사이트 중심의 조직을 구축하세요.

분석 서비스 알아보기
다음 단계 안내

탁월한 고객 및 직원 경험을 제공하기 위해 데이터 사일로를 제거하고, 복잡성을 줄이며, 데이터 품질을 개선하는 데이터 전략을 구축하세요.

데이터 관리 솔루션 살펴보기 watsonx.data 알아보기