Apache Iceberg란 무엇인가요?

Apache Iceberg는 커뮤니티 중심의 분산형 Apache 2.0 라이선스 100% 오픈 소스 데이터 테이블 형식으로서 데이터 레이크에 저장된 대규모 데이터 세트의 데이터 처리를 단순화합니다. 데이터 엔지니어가 Apache Iceberg를 사용하는 이유는 어떤 규모에서든 빠르고 효율적이며 안정적이며 시간이 지남에 따라 데이터세트가 어떻게 변하는지 기록하기 때문입니다. Apache Iceberg는 Apache Spark, Apache Flink, Apache Hive, Presto 등, 널리 사용되는 데이터 처리 프레임워크와 간편하게 통합할 수 있는 기능을 제공합니다.

트랜잭션 데이터 레이크란 무엇인가요?

데이터 레이크는 모든 규모의 구조적 및 비구조적 데이터를 저장할 수 있는 중앙 집중식 리포지토리입니다. 데이터 트랜잭션은 단일 작업으로 수행되는 일련의 데이터 교환입니다. 예를 들어 고객이 은행 계좌에서 돈을 인출하면 은행은 계좌의 잔액이 충분한지 확인하고, 고객의 신원을 확인하고, 계좌에서 인출금을 인출하는 등, 한 번의 데이터 트랜잭션에서 여러 데이터 교환 작업을 동시에 수행합니다. 트랜잭션 데이터 레이크는 데이터를 대규모로 저장할 뿐만 아니라, 트랜잭션 작업을 지원하고 데이터의 정확성과 일관성을 보장하며 시간 경과에 따라 데이터 및 데이터 구조가 어떻게 변하는지 추적할 수 있도록 하는 데이터 레이크 유형입니다. 이러한 특성을 총칭하여 원자성, 일관성, 격리성, 지속성(ACID)이라고 합니다.

  • 원자성은 각 트랜잭션이 완전히 성공하거나 완전히 실패하는 단일 이벤트로 실행되고 중간 상태는 없도록 보장합니다. 
  • 일관성은 쓰여진 모든 데이터가 데이터 레이크의 정의된 규칙에 따라 유효성을 갖도록 하여 데이터의 정확성과 신뢰성을 보장합니다. 
  • 격리는 여러 트랜잭션이 서로 방해하지 않으면서 동시에 발생할 수 있도록 하여 각 트랜잭션이 독립적으로 실행되도록 보장합니다.
  • 지속성은 트랜잭션이 제출된 후 데이터가 손실되거나 손상되지 않음을 의미합니다. 정전과 같은 시스템 장애 발생 시에도 데이터를 복구할 수 있습니다.

Apache Iceberg를 사용하면 어떤 이점이 있나요?

트랜잭션 데이터 레이크에 Apache Iceberg를 사용할 경우 얻을 수 있는 몇 가지 주요 이점은 다음과 같습니다.

  • SQL에 대한 지식: 구조적 쿼리 언어(SQL)는 모든 유형의 애플리케이션에서 자주 사용되는 널리 사용되는 쿼리 언어입니다. 데이터 분석가와 개발자들이 SQL을 배우고 사용하는 이유는 SQL이 다양한 프로그래밍 언어와 잘 통합되고, 명령문에 일반적인 영어 키워드를 사용하므로 배우기가 상당히 수월하기 때문입니다. 구조적 쿼리 언어(SQL)에 익숙한 사람이라면 누구나 새로운 언어를 배울 필요 없이 Apache Iceberg를 사용하여 데이터 레이크를 구축하고 대부분의 데이터 레이크 작업을 수행할 수 있습니다.
  • 데이터 일관성: Apache Iceberg는 데이터를 읽고 쓰는 모든 사용자가 동일한 데이터를 보도록 데이터 일관성을 보장합니다. 
  • 데이터 구조: Apache Iceberg를 사용하면 데이터 구조를 쉽게 변경할 수 있습니다. 이를 스키마 진화라고도 하는데, 사용자가 기반 데이터를 건드리지 않고 데이터 테이블에서 열을 추가하거나 열 이름을 변경하거나 열을 제거할 수 있게 합니다.
  • 데이터 버전 관리: Apache Iceberg는 사용자가 시간 경과에 따른 데이터의 변경 내용을 추적할 수 있는 데이터 버전 관리를 지원합니다. 따라서 사용자가 이전 버전의 데이터에 액세스하여 쿼리하고, 업데이트 작업과 삭제 작업 간에 변경된 데이터를 분석하는 시간 이동 기능이 지원됩니다.
  • 크로스 플랫폼 지원: Apache Iceberg는 Apache Spark, Apache Hive, Presto 등 다양한 스토리지 시스템과 쿼리 엔진을 지원합니다. 따라서 다양한 데이터 처리 환경에서 Iceberg를 쉽게 사용할 수 있습니다.
  • 증분 처리: Iceberg는 사용자가 마지막 실행 이후 변경된 데이터만 처리할 수 있도록 하는 증분 처리 기능을 지원합니다. 이 기능을 변경 데이터 캡처(CDC)라고도 합니다. 이 기능은 데이터 처리 효율성과 성능을 개선하는 데 도움이 될 수 있습니다.

Apache Iceberg의 일반적인 사용 사례는 무엇인가요?

Apache Iceberg는 다음을 비롯한 수많은 데이터 레이크 사용 사례에 적합합니다.

  • 자주 삭제해야 하는 데이터 레이크의 데이터 테이블(예: 데이터 프라이버시에 관한 법률을 시행하는 경우)
  • 레코드 수준 업데이트가 요구되는 데이터 레이크의 데이터 테이블. 이는 데이터가 확정된 후에 데이터 세트를 자주 업데이트해야 하는 경우에 유용합니다(예: 나중에 발생하는 고객 반품과 같은 이벤트로 인해 변경될 수 있는 판매 데이터). Iceberg는 전체 데이터 세트를 다시 게시할 필요 없이 개별 레코드를 업데이트할 수 있는 기능을 제공합니다.
  • Slowly Changing Dimension(SCD) 테이블처럼 변경 내용을 예측할 수 없는 데이터 레이크의 데이터 테이블. SCD의 예로는 시간 경과에 따라, 알 수 없는 간격으로 변경될 수 있는 이름, 위치 및 연락처 정보가 포함된 고객 레코드 테이블이 있습니다.
  • 데이터 레이크와의 트랜잭션에서 데이터 유효성, 내구성 및 신뢰성을 보장해야 하는 경우, Apache Iceberg 테이블 형식을 배포하여 ACID 트랜잭션을 보장할 수 있습니다.
  • 추세 분석을 수행하기 위해 이전 버전의 데이터를 쿼리하거나 일정 기간 동안의 데이터 변화를 분석하거나 문제를 해결하기 위해 이전 버전으로 복원 또는 롤백할 목적으로 이전으로 시간 이동을 해야 하는 경우

Apache Iceberg는 누가 사용하나요?

Apache Iceberg를 사용하는 페르소나에는 데이터 엔지니어, 데이터 관리자, 데이터 분석가, 데이터 사이언티스트 등이 포함됩니다.  데이터 엔지니어와 데이터 관리자는 Apache Iceberg를 사용하여 확장 가능한 데이터 스토리지 시스템을 설계하고 구축할 수 있습니다.  데이터 분석가와 데이터 사이언티스트는 Apache Iceberg를 사용하여 대규모 데이터 세트를 효율적으로 분석할 수 있습니다. 

Apache Iceberg를 선택해야 하는 이유는 무엇인가요?

Apache Iceberg는 대규모 데이터 세트를 효율적으로 빠르게 처리할 수 있는 방법을 제공합니다. 이 서비스는 다음 이점을 제공합니다.

  1. 오픈 소스: Apache Iceberg는 오픈 소스 프로젝트입니다. 따라서 무료로 사용할 수 있으며 특정한 요구 사항에 따라 맞춤화할 수 있습니다. 또한 지속적으로 이 프로젝트를 개선하고 새로운 기능을 추가하는 개발자 커뮤니티의 활동도 활발합니다. 
  2. 확장성: Apache Iceberg는 대규모 데이터 세트를 효율적으로 처리하도록 설계되었습니다. 여러 노드에 걸쳐 데이터를 분할하고 구성할 수 있으므로, 워크로드를 분산하고 데이터 처리 속도를 높일 수 있습니다. 
  3. 성능: Apache Iceberg에는 조건자 푸시다운 및 스키마 진화와 같은 열 기반 저장 및 압축 기술을 비롯하여 쿼리 성능을 최적화하는 다양한 기능이 있습니다. 
  4. 유연성: Apache Iceberg를 사용하면 쿼리를 다시 작성하거나 데이터 구조를 재구축하지 않고도 시간 경과에 따라 데이터가 진화할 수 있도록 데이터 구성 방식을 변경할 수 있습니다. 또한 다양한 데이터 형식 및 데이터 소스를 지원하므로 기존 시스템과 손쉽게 통합할 수 있습니다. 
  5. 신뢰성: Apache Iceberg는 트랜잭션 지원을 통해 데이터 일관성과 신뢰성을 보장합니다. 시간 경과에 따른 데이터의 변화를 추적하고 이전 버전으로 롤백하여 문제를 해결할 수 있습니다.

Iceberg를 지원하는 AWS 서비스는 어떤 것들이 있나요?

Apache Iceberg는 Apache Spark, Apache Flink, Apache Hive, Presto 등, 널리 사용되는 데이터 처리 프레임워크를 지원합니다. Amazon Redshift, Amazon Athena, Amazon EMR, AWS Glue 등의 AWS 서비스는 Apache Iceberg를 비롯한 트랜잭션 데이터 레이크 프레임워크를 기본적으로 지원합니다. 지원되는 AWS 서비스와 Apache Iceberg를 함께 사용하면, 대개 S3의 스토리지를 기반으로 하는 트랜잭션 데이터 레이크를 구축할 수 있습니다.

  • Amazon Redshift는 완전관리형 AI 기반 SQL 분석 및 데이터 웨어하우징 서비스로, 고객의 비즈니스 의사 결정을 신속하고 비용 효율적으로 주도합니다. Amazon Redshift는 데이터 공유를 통해 실시간에 가까운 분석과 AI/ML 사용 사례를 주도하는 제로 ETL을 지원하는 대규모 병렬 처리(MPP), 다중 클러스터 및 서버리스 아키텍처를 제공합니다. 고객은 Amazon Redshift를 사용하여 AWS Glue 데이터 카탈로그를 통해 액세스하는 데이터 레이크에서 Apache Iceberg 테이블을 쿼리하고 이를 데이터 웨어하우스의 테이블과 결합하여 포괄적인 분석을 수행할 수 있습니다.
  • Amazon Athena는 오픈소스 프레임워크에 구축된 서버리스 대화형 분석 서비스로 개방형 테이블과 파일 형식을 지원합니다. Athena는 페타바이트 규모의 데이터를 상주 위치에서 분석하는 간소화되고 유연한 방식을 제공합니다. Athena는 데이터에 Apache Parquet 형식을 사용하고 메타스토어에 AWS Glue 카탈로그를 사용하는 Apache Iceberg 테이블에 대한 읽기, 시간 이동, 쓰기 및 DDL 쿼리를 기본적으로 지원합니다. 
  • Amazon EMR은 Apache Spark, Hadoop, Presto 및 Hive와 같은 오픈 소스 프레임워크를 사용하여 페타바이트급 데이터 처리, 대화식 분석 및 기계 학습을 위한 빅 데이터 솔루션입니다. Amazon EMR 6.5.0부터는 Amazon EMR 클러스터에서 Iceberg 테이블 형식 기반으로 Apache Spark 3를 사용할 수 있습니다. Spark, Trino, Flink, Hive 등의 EMR 프레임워크는 Apache Iceberg를 지원합니다.
  • AWS Glue는 분석, 기계 학습(ML) 및 애플리케이션 개발을 위해 여러 소스에서 데이터를 쉽게 탐색, 준비, 이동 및 통합할 수 있도록 하는 확장 가능한 서버리스 데이터 통합 서비스입니다.  AWS Glue 3.0 이상은 데이터 레이크를 위한 Apache Iceberg 프레임워크를 지원합니다. AWS Glue를 사용하여 Amazon S3의 Iceberg 테이블에서 읽기 및 쓰기 작업을 수행하거나, AWS Glue 데이터 카탈로그를 사용하여 Iceberg 테이블을 사용한 작업을 수행할 수 있습니다. 삽입, 업데이트, 모든 Spark 쿼리, Spark 쓰기를 비롯한 추가 작업도 지원됩니다. 

AWS 활용 다음 단계

제품 관련 추가 리소스 확인
분석 서비스 확인  
무료 계정에 가입

AWS 프리 티어에 즉시 액세스할 수 있습니다.

가입 
콘솔에서 구축 시작

AWS Management Console에서 구축을 시작하세요.

로그인