Iceberg 로그 적재 전략: DB는 UPSERT 운영, 서버 로그는 APPEND 테스트로 zstd 레벨 9 적용 시 파일 크기 51.4% 감소
핵심 내용
서버 로그 Iceberg APPEND 적재 테스트에서 zstd 레벨 9 적용 시 ORC 대비 파일 크기가 51.4% 감소했다.
자세히 보기
데이터분석플랫폼 조직이 로그 유형에 따라 Apache Iceberg 테이블 적재 및 운영 전략을 차별화했습니다. DB 로그는 Flink CDC를 통해 UPSERT 모드로 실제 운영 중이며, 서버 로그는 Kafka와 Flink를 거쳐 APPEND 모드로 적재하는 방식을 테스트했습니다.
적재 방식 및 파티셔닝
DB 로그는 최신 데이터 반영을 위해 Primary Key 기준 UPSERT를 사용하며, Bucket transform으로 프루닝을 최적화했습니다. 커밋 주기는 Flink Checkpoint와 동일한 10분으로 설정해 Small file을 최소화했습니다.
서버 로그는 데이터 양이 방대하여 UPSERT의 최적화 비용이 중복 제거 이점보다 크므로 APPEND 모드를 선택했습니다. 중복 제거는 Spark 지표 계산 단계에서 수행합니다. 파티셔닝은 Identity transform을 적용하되, UTC와 KST 시간대 오프셋 문제를 해결하기 위해 Process time을 문자열 타입으로 저장합니다.
압축 성능 및 스토리지 효율
Parquet 포맷과 zstd 압축을 기본으로 하며, 일 평균 30억 개 규모 서버 로그 테스트 결과 zstd 레벨 9 적용 시 기존 ORC 포맷 대비 파일 크기가 51.4% 감소했습니다. 압축 레벨 증가로 CPU 사용률은 상승하지만, Kafka Lag 및 Flink 처리 지연에 미치는 영향은 미미한 것으로 확인됐습니다.
최적화 및 모니터링
Compaction은 binpack 전략으로 수행하며, 타겟 파일 크기는 HDFS 블록 사이즈와 동일한 256 MB로 설정했습니다. 서버 로그는 매 시간 이전 파티션을 대상으로 Compaction을 진행해 약 6MB의 Small files를 병합합니다.
모니터링은 Prometheus, Grafana, 사내 TSCoke를 활용합니다. 배치 Job 지표 수집을 위해 Prometheus Pushgateway를 도입했으며, honor_labels: true 설정과 URL 경로 기반 그룹핑으로 지표 덮어쓰기를 방지합니다. 대시보드를 통해 데이터 파일, 삭제 파일, 매니페스트 파일 수 변화를 추적해 Small file 증가 여부를 감시합니다.
이 한국어 요약은 AI가 자동으로 만들었습니다. 원문의 주장과 맥락은 원문에서 확인해 주세요. 저작권은 원저작자에게 있습니다.