1264 words
6 minutes
[spark]MPP와 데이터레이크 하우스 관점에서의 Spark
01. Overview
- MPP DW(Massively Parallel Processing Data Warehouse)와 데이터 레이크하우스(Data Lakehouse) 관점에서 Spark의 아키텍처적 역할을 간단히 정리
02. Apache Spark의 아키텍처적 정체성
- Spark는 단순 분산 처리 엔진이나 MPP 엔진의 일종으로 생각될 수 있음
- 시스템 설계 관점에서 spark는 단순 MPP엔진보다는 “스토리지와 완전히 분리된(Compute-Only), 다목적(General-Purpose) 인메모리 분산 컴퓨팅 엔진” 에 보다 가까움
- 스토리지 독립성: 전통적인 MPP 엔진(Redshift, Teradata)이 빠른 쿼리를 위해 스토리지와 컴퓨팅을 강하게 결합하는 것과 달리, Spark는 밑단에 S3가 있든 Kafka가 있든 상관없이 데이터를 가져와 가공하는 데 집중
- 다목적 : SQL뿐만 아니라 Python, Scala를 이용한 복잡한 데이터 변환, 머신러닝(ML), 스트리밍을 단일 파이프라인에서 처리가능
03. 핵심 아키텍처 패러다임 비교
1. MPP DW 중심 (Modern Data Stack)
- 데이터 애널리스트(DA)와 비즈니스 인텔리전스(BI)의 생산성을 극대화하는 데 초점을 맞춘 아키텍처
- ex) Snowflake, Google BigQuery 등
주요 특징 및 사용 상황
- ELT 패턴: SaaS 도구(Fivetran 등)를 통해 원본 데이터를 DW에 일단 밀어 넣고(Load), DW 내부의 막강한 컴퓨팅 파워를 이용해 SQL로 변환(Transform) .
- 장점: 인프라 관리의 부담이 거의 없음(Serverless),
- 구축 속도가 빠르며 SQL만으로 파이프라인 통제가 가능
- 단점: 비정형 데이터(이미지, 복잡한 텍스트 로그) 처리나 초단위 리얼타임 스트리밍, 대규모 딥러닝 모델 학습에는 부적합
2. Spark 중심 데이터 레이크하우스 (Medallion Architecture)
- 저렴한 객체 스토리지(S3 등) 위에 데이터 레이크를 구축
- Spark를 연산 엔진으로 사용하여 DW의 기능까지 수용하는 아키텍처
- 이런 형태를 항상 메달리온 아키텍처라고 하진 않지만 보통 구현시 이런식으로 진행.
주요 특징 및 사용 상황
- 메달리온 아키텍처(Medallion Architecture): 데이터의 정제 수준에 따라 스토리지를 논리적으로 분리
Bronze: 원본 데이터 (Raw)Silver: 필터링 및 정제된 데이터 (Cleansed)Gold: 비즈니스 로직이 반영된 집계 데이터 (Curated)- 한계점: 인프라 튜닝(메모리 관리, 셔플링 최적화) 등 엔지니어링 리소스가 크게 소모. 이 경우 DataBricks 같은 Managed Service 사용을 검토할 수있음
04. 아키텍처 선택 방법론
어떤 아키텍처를 선택할지는 결국 **“병목이 어디에 있는가?”**에 기반함
- MPP DW를 선택해야 할 때: 분석가들이 데이터를 원할 때 엔지니어의 병목 없이 즉각적으로 BI 대시보드를 만들어야 하는 “Data Serving”이 가장 중요할 때.
- Lakehouse (Spark)를 선택해야 할 때: 정형/비정형 데이터가 혼재되어 있고, 단순 SQL로는 표현할 수 없는 복잡한 전처리 로직이나 거대한 머신러닝 파이프라인이 비즈니스의 핵심일 때.
아이디어 코드 비교 (동일한 로직의 추상화 차이):
-- MPP DW (dbt)-- 꼭 dbt가 아니어도 됨WITH cleaned_data AS ( SELECT user_id, LOWER(email) AS email FROM raw_users WHERE is_active = true)SELECT * FROM cleaned_data;# Lakehouse (Spark 기반 Python)df = spark.read.parquet("s3://raw-data/users")cleaned_df = df.filter(df.is_active == True) \ .withColumn("email", lower(df.email)) \ .withColumn("sentiment", apply_custom_nlp_model(df.comments))cleaned_df.write.format("delta").save("s3://silver-data/users")Concept
- MPP (Massively Parallel Processing) : 대규모 데이터를 여러 노드에 분산시켜 병렬로 처리하는 아키텍처. 주로 빠른 SQL 쿼리 응답에 최적화됨.
- Modern Data Stack (MDS) : 클라우드 DW를 중심으로 Fivetran(추출/적재), dbt(변환), BI 툴을 결합하여 분석가 주도적으로 운영되는 최신 데이터 인프라 조합.
- ELT (Extract, Load, Transform) : 데이터를 먼저 타겟 시스템(DW)에 적재(Load)한 후, 타겟 시스템의 연산력을 이용해 변환(Transform)하는 패턴.
- Medallion Architecture : 데이터 레이크하우스에서 데이터 품질을 통제하기 위해 Bronze(원천), Silver(정제), Gold(집계) 레이어로 나누어 관리하는 데이터 설계 패턴.
Key_Takeaways
- Spark는 MPP DW와 달리 스토리지와 완전히 분리된 인메모리 연산 엔진에 가까움
- Spark의 기본적인 핵심역할은 데이터와 컴퓨팅을 분리하는 것. 따라서 MPP DW랑 다른 관점에서 생각해야함.
- MPP DW 중심의 Modern Data Stack은 SQL 기반 분석가의 접근성과 빠른 BI 서빙 중심 아키텍처에서 장점을 가짐
- Spark 중심의 데이터 레이크하우스는 비정형 데이터 처리, 머신러닝 연동, 복잡한 ETL에 유연하게 대응가능
[[spark-architecture]] [[de-spark-03-rdd]] [[de-spark-03-rdd]]
[spark]MPP와 데이터레이크 하우스 관점에서의 Spark
https://yjinheon.netlify.app/posts/02de/spark/de-mpp-vs-data-lakehouse/