스트리밍 데이터 환경에서의 Apache Iceberg 테이블 효율적인 컴팩션 전략
🤖 AI 추천
이 콘텐츠는 Apache Iceberg를 사용하여 실시간 스트리밍 워크로드를 처리하는 데이터 엔지니어, 플랫폼 엔지니어, 그리고 데이터 아키텍트에게 매우 유용합니다. 특히 데이터 파이프라인의 성능 저하 없이 스몰 파일 문제를 해결하고 데이터 최신성을 유지하고자 하는 실무자에게 권장됩니다.
🔖 주요 키워드

핵심 트렌드
스트리밍 데이터 환경에서 Apache Iceberg 테이블의 스몰 파일 누적 및 성능 저하 문제를 해결하기 위해, 기존 배치 방식과는 다른 점진적이고 지능적인 컴팩션 전략이 요구됩니다.
주요 변화 및 영향
- 스몰 파일 문제: 연속적인 데이터 스트리밍으로 인해 파티션마다 수많은 스몰 파일이 빠르게 생성되어 성능 저하의 원인이 됩니다.
- 기존 컴팩션의 한계: 전체 파티션 또는 테이블을 재작성하는 방식은 데이터 수집(ingestion)과 레이턴시 민감 읽기 작업과의 충돌, 커밋 경쟁, 최신 데이터 누락, 레이턴시 급증을 유발할 수 있습니다.
- 효율적인 컴팩션 전략:
- 점진적 접근: 현재 쓰기 작업이 진행 중인 파티션을 제외하고, '콜드' 파티션(예: 1시간 이상 경과된 데이터)을 타겟으로 컴팩션 작업을 수행합니다.
- 파일 단위 최적화: 전체 파티션 재작성이 아닌, 특정 파일 서브셋(가장 오래되거나 가장 작은 파일)을 대상으로 컴팩션합니다.
- 메타데이터 기반 트리거: 파티션별 파일 수, 평균 파일 크기, 파일 연령 등의 메타데이터를 활용하여 동적으로 컴팩션 작업을 트리거합니다.
- 병렬성 활용: 넓은 테이블의 경우 높은 병렬성을 사용하여 작업 시간을 단축합니다.
- 목표 파일 크기: 128MB-256MB 범위를 유지하여 쿼리 성능과 스토리지 효율성을 균형 있게 맞춥니다.
- 도입 도구: Spark의
RewriteDataFiles
, Dremio의OPTIMIZE
기능 등을 활용할 수 있습니다. - 오케스트레이션: Airflow, Dagster, dbt Cloud와 같은 오케스트레이션 도구와 메타데이터 테이블을 연동하여 컴팩션 로직을 자동화하고 관리합니다.
트렌드 임팩트
이러한 점진적이고 메타데이터 기반의 컴팩션 전략은 스트리밍 데이터 파이프라인의 안정성을 높이고, 데이터 수집 및 쿼리 성능을 동시에 최적화하여 데이터 최신성과 사용자 경험을 개선하는 데 중요한 역할을 합니다.
업계 반응 및 전망
스몰 파일 문제는 데이터 레이크하우스 환경에서 지속적으로 발생하는 주요 과제이며, Apache Iceberg와 같은 오픈 소스 테이블 포맷들은 이러한 문제를 해결하기 위한 다양한 기능과 전략을 발전시키고 있습니다. 메타데이터 기반의 자동화된 컴팩션은 향후 데이터 관리의 필수 요소로 자리 잡을 것으로 전망됩니다.
📚 실행 계획
Apache Iceberg 테이블의 파티션 전략을 검토하고, 데이터 수집 패턴에 맞춰 '콜드' 파티션 식별 및 컴팩션 대상을 정의합니다.
데이터 아키텍처
우선순위: 높음
Airflow, Dagster 등 오케스트레이션 도구를 사용하여 Iceberg 메타데이터 테이블(files, manifests)을 주기적으로 조회하고, 정의된 기준(파일 수, 연령 등)에 따라 컴팩션 작업을 트리거하는 워크플로우를 구축합니다.
데이터 파이프라인
우선순위: 높음
Spark의 RewriteDataFiles 또는 Dremio의 OPTIMIZE와 같은 기능을 활용하여, 전체 파티션이 아닌 특정 파일 서브셋을 대상으로 하는 컴팩션 작업을 구현하고, 목표 파일 크기(128-256MB)를 설정합니다.
성능 튜닝
우선순위: 중간