피드로 돌아가기
Apache Iceberg in Production: Compaction, Catalogs, and the Pitfalls Nobody Warns You About
Dev.toDev.to
Database

S3 비용 2배 증가 및 쿼리 지연을 해결한 Iceberg 최적화 전략

Apache Iceberg in Production: Compaction, Catalogs, and the Pitfalls Nobody Warns You About

Gabriel Henrique2026년 6월 25일7intermediate

Context

Hive 기반 레거시 테이블을 Apache Iceberg로 마이그레이션 후, 마이크로 배치 쓰기로 인한 Small Files 문제 발생. 이로 인해 메타데이터 계획 단계의 오버헤드가 급증하며 10초 내외의 쿼리가 4분까지 지연되는 병목 현상 직면.

Technical Solution

  • rewrite_data_files를 통한 정기적 Compaction 수행로 파일 개수 최적화 및 쿼리 Planning 시간 단축
  • 128MB~512MB 사이의 Target File Size 설정을 통해 읽기 병렬성과 메타데이터 크기의 최적 균형 달성
  • Hidden Partitioning 도입으로 물리적 레이아웃과 논리적 쿼리를 분리하여 데이터 재작성 없는 파티션 전략 변경 구현
  • REST Catalog 채택을 통해 Spark, Trino, Flink 등 다중 엔진 환경에서의 상호운용성 및 확장성 확보
  • Snapshot Expiration 자동화를 통해 누적되는 메타데이터 및 S3 리스트 작업 비용 절감
  • 데이터 볼륨에 맞춘 Partition Granularity 조절로 과도한 파티션 생성으로 인한 성능 저하 방지

- [ ] write.target-file-size-bytes 속성을 명시적으로 설정하여 엔진 간 파일 크기 일관성 확보 - [ ] 데이터 규모에 맞는 파티션 단위(Day/Hour 등) 설정 및 주기적인 rewrite_data_files 스케줄링 구성 - [ ] 멀티 엔진 환경 구축 시 벤더 종속성을 피하기 위해 REST Catalog(Nessie, Polaris) 우선 검토 - [ ] 스토리지 누수 방지를 위해 7일 주기 등의 Snapshot Expiration 정책 수립

원문 읽기