Chapter 6

빅데이터 분석 기반의 구축

📑 목차

1. Spark + Jupyter 애드 혹 분석

2. Hive + Presto 데이터 파이프라인

3. Airflow 워크플로 자동화

4. 클라우드 서비스 비교 (AWS · GCP · Treasure Data)

5. 핵심 요약 정리

01

Spark + Jupyter 애드 혹 분석

JSON 같은 스키마리스 데이터를 대화식으로 가공·집계·시각화하는 흐름입니다. MongoDB에 저장된 Twitter 데이터를 Spark로 분석하는 예제를 다룹니다.

🐦 Twitter API 🍃 MongoDB ⚡ Spark (DAG) 🐼 pandas 📊 BI 시각화

📌 핵심 흐름

MongoDB에서 JSON 데이터를 Spark 데이터 프레임으로 읽기 (지연 평가, DAG 자동 생성)
Spark SQL로 집계 + Python 함수로 텍스트 가공 (단어 분해 등)
③ 열 지향 스토리지(Parquet)로 변환 → 고속 집계 가능
카디널리티 축소: 등장 1000회 이하 단어를 카테고리로 묶어 레코드 수 대폭 감소
pandas로 변환 → CSV 출력 → BI 도구로 시각화

⚠️ 카디널리티 축소가 핵심!

1,200만 건 → 시간별 집계 260만 건 → 단어 카테고리화 후 4만 건으로 축소. 시각화에 사용하는 디멘전이 늘수록 조합 수가 커지므로, 카디널리티를 낮추는 것이 시각화 프로세스의 열쇠입니다.

💡 실무 팁

BI 도구에서 MongoDB에 직접 연결할 수도 있지만, 가공하지 않은 데이터를 그대로 시각화하면 잘 안 됩니다. 노트북에서 시각화에 적합한 데이터를 먼저 만들고, BI 도구로 읽어들이는 것이 훨씬 생산적입니다.


02

Hive + Presto 데이터 파이프라인

6.1절의 대화식 분석과 같은 내용을 멱등한 배치 태스크로 재구축합니다. 나중에 워크플로에 포함할 수 있도록 3개의 태스크로 분리합니다.

📤

태스크 1: Embulk

MongoDB → JSON 추출
시간 범위 파라미터로 멱등 실행
동일 파라미터 → 결과 덮어쓰기

🏗️

태스크 2: Hive

JSON → 열 지향 스토리지 변환
파티셔닝 + INSERT OVERWRITE
이벤트 시간 정렬 (조건절 푸시다운)

태스크 3: Presto

열 지향 스토리지 고속 집계
1,000만 건 수초 만에 처리
매일 30일분 재집계 → 치환 = 멱등

📌 멱등성의 핵심 기법

✔ Embulk: 동일 파라미터 → 결과 덮어쓰기
✔ Hive: INSERT OVERWRITE TABLE → 파티션 치환
✔ Presto: 매번 30일분 재집계 후 결과 치환 (증분 X)


03

Airflow 워크플로 자동화

6.2절의 3개 태스크를 Apache Airflow로 워크플로화합니다. Python으로 DAG를 정의하고, 스케줄러로 자동 실행합니다.

💡 비유로 이해하기

Airflow는 자동 공장 라인의 관제 시스템입니다. 각 공정(태스크)의 순서를 정의하고, 매일 정해진 시간에 라인을 가동시키며, 불량(오류)이 나면 해당 공정만 다시 돌립니다.

Airflow 개발 흐름

🧪

① airflow test

개별 태스크 테스트
DB에 기록 안 됨
납득할 때까지 반복

② airflow backfill

전체 DAG 실행
시간 범위 지정 가능
과거 데이터 일괄 처리

🔄

③ scheduler

정기 실행 시작
항시 가동 필수
실패 시 자동 복구 지원

⚠️ Airflow 스케줄의 특수성

DAG는 스케줄 간격이 "끝날 때" 실행됩니다. @daily라면 1월 1일의 태스크는 1월 2일 00:00에 실행. 컨텍스트(ds, ts)에는 "처리해야 할 데이터의 시간"인 1월 1일이 전달됩니다.

🔧 BashOperator

셸 스크립트 실행. 외부 파일 호출 가능. {{ ds }} 등 컨텍스트를 템플릿으로 삽입

🐍 PythonOperator

Python 함수 실행. 직렬화 후 지연 평가. 글로벌 스코프에 함수 정의 권장


04

클라우드 서비스 비교

실제 데이터 분석 기반은 대부분 클라우드 서비스 위에 구축됩니다. 자원을 언제든 증감할 수 있고, 시스템 관리 부담을 줄일 수 있기 때문입니다.

🟠

AWS

📦 S3 (객체 스토리지)

🗄️ Redshift (MPP DB, 핵심)

🐘 EMR (Hadoop/Spark)

⚡ Athena (Presto)

📮 Kinesis (스트리밍)

서비스별 조합 자유도 높음. 복잡한 파이프라인엔 전문 지식 필요

🔵

GCP

📦 Cloud Storage

🗄️ BigQuery (스토리지/쿼리 분리)

⚙️ Dataflow (배치+스트림)

📓 Datalab (노트북)

📮 Pub/Sub (메시지 브로커)

Google 자체 데이터 처리 기술 기반. 대규모 애드 혹 분석에 강점

🟢

Treasure Data

📡 Data Collection (Fluentd)

🗄️ Hive/Presto (내장)

📤 Embulk (벌크 전송)

🔄 Digdag (선언형 워크플로)

📊 Reporting (BI 도구)

모든 서비스 통합 제공. Full Managed. 시스템 관리 최소화

💡 비유로 이해하기

AWS레고 블록 — 원하는 블록을 골라 직접 조립. 자유도 높지만 조립 실력 필요
GCP프리미엄 공구 세트 — Google이 쓰던 공구를 빌려주는 것. 대규모 작업에 강력
Treasure Data완성형 가전제품 — 전원만 꽂으면 바로 동작. 커스텀은 제한적

Redshift vs BigQuery

Redshift: 스토리지+컴퓨팅 일체. 데이터 증가 시 노드 확장 필요. 이용 빈도 낮은 데이터 보관엔 비효율
BigQuery: 스토리지/쿼리 분리. 쿼리 미실행 시 스토리지 요금만. 대량 보관에 유리

Digdag (선언형 워크플로)

YAML로 태스크 정의. SQL·스크립트는 별도 파일. Treasure Data에 업로드하면 클라우드에서 실행. 워크플로 서버 유지보수 불필요


SUMMARY

핵심 요약 정리 ✨

애드 혹 분석: Spark + Jupyter로 대화식 데이터 가공. 카디널리티 축소가 시각화의 핵심입니다.

배치 파이프라인: Embulk(추출) → Hive(구조화) → Presto(집계). 모든 태스크를 멱등하게 구현합니다.

Airflow로 워크플로 자동화. test → backfill → scheduler 순으로 개발합니다.

AWS(레고 조립), GCP(Google 공구), Treasure Data(완성형 가전) — 팀 역량과 요구에 맞춰 선택합니다.

클라우드를 쓰더라도 각 기술의 역할을 이해하고 올바르게 사용하는 것은 엔지니어의 책임입니다.

+ Recent posts