Chapter 6
빅데이터 분석 기반의 구축
📑 목차
1. Spark + Jupyter 애드 혹 분석
2. Hive + Presto 데이터 파이프라인
3. Airflow 워크플로 자동화
4. 클라우드 서비스 비교 (AWS · GCP · Treasure Data)
5. 핵심 요약 정리
01
Spark + Jupyter 애드 혹 분석
JSON 같은 스키마리스 데이터를 대화식으로 가공·집계·시각화하는 흐름입니다. MongoDB에 저장된 Twitter 데이터를 Spark로 분석하는 예제를 다룹니다.
📌 핵심 흐름
① 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(완성형 가전) — 팀 역량과 요구에 맞춰 선택합니다.
클라우드를 쓰더라도 각 기술의 역할을 이해하고 올바르게 사용하는 것은 엔지니어의 책임입니다.
'책 리뷰 > 빅데이터를 지탱하는 기술' 카테고리의 다른 글
| [빅데이터를 지탱하는 기술] 5장 빅데이터의 파이프라인 (0) | 2026.02.20 |
|---|---|
| [빅데이터를 지탱하는 기술] 4장 빅데이터의 축적 (0) | 2026.02.20 |
| [빅데이터를 지탱하는 기술] 3장 빅데이터의 분산 처리 (0) | 2026.02.20 |
| [빅데이터를 지탱하는 기술] 2장 빅데이터의 탐색 (0) | 2026.02.20 |
| [빅데이터를 지탱하는 기술] 1장 빅데이터의 기초 지식 (0) | 2026.02.20 |