Community

Airbnb 데이터 웨어하우스 인프라 업그레이드하기

Airbnb 데이터 웨어하우스 인프라가 어떻게 업그레이드 되었는지에 대한 글이 퍼블리싱되서 공유해봅니다. 간략히 요약하자면, Spark3와 Iceberg를 사용하면서 컴퓨팅 리소스 50%, 데이터 ingestion하는 framework의 작업시간 40%를 절감했다고 합니다. ⚙️ 기존 인프라 이전에도 한번 레거시 HDFS 클러스터를 S3로 옮겨오면서 개선을 이뤄냈지만, S3에서 작업되는 워크로드의 특성때문에 확장성과 생산성에 제한이 있었습니다. 기존 인프라에서 마주한 문제들 1. Hive metastore 파티션의 수가 커질수록 Hive의 백엔드 DBMS의 load가 병목이 되었습니다. 2. Hive/S3 interactions Hive가 처음부터 object storage 용도로 디자인된게 아니기 때문에 list-after-write을 보장하기 위해서 처음에는 별도의 temp HDFS클러스터에 write를 하고 S3로 distcp 프로세스로 데이터를 옮겨왔어야 했습니다. 3. Schema evolution 데이터웨어하우스 데이터에 접근하기 위해 Spark, Trino, Hive 3가지의 컴퓨팅 엔진을 사용하고 있었고 각각의 엔진이 schema 변경되는 것을 다르게 다루기 때문에 데이터 퀄리티 이슈가 항상 있었습니다. 4. Partitioning Hive 테이블들은 고정된 컬럼으로 파티셔닝 되기 때문에 쉽게 변경하기가 어려웠습니다. ⭐️ Spark3, Iceberg Spark3의 AQE기능을 활용해서 각 단계에서 데이터가 shuffle될때의 사이즈가 커지거나 작아져도, 다시 파티션당 최적화를 해서 퍼포먼스를 향상시켰습니다. Iceberg로는 파티션의 granularity를 시간이 지남에 따라서 조절을 할 수 있습니다. Ingested 테이블들은 새로운 데이터를 hourly단위의 granularity에 작성을 하고, 나중에 daily로 자동화된 프로세스로 파일들을 daily 파티션으로 통합할 수 있습니다.

알림

알림이 없습니다