핵심 인사이트

  1. 본질: Hadoop은 HDFS(Hadoop Distributed File System, 하둡 분산 파일 시스템)와 MapReduce로 수천 대 범용 서버에 페타바이트 데이터를 분산 저장·처리하는 빅데이터 기반 프레임워크이며, Apache Spark는 인메모리(In-memory) 분산 컴퓨팅으로 MapReduce 대비 최대 100배 빠른 처리를 실현한다.
  2. 가치: RDD(Resilient Distributed Dataset, 탄력적 분산 데이터셋)→DataFrame→Dataset API의 진화는 사용 편의성과 최적화를 동시에 달성했으며, Spark의 통합 엔진(배치·스트리밍·ML·그래프)은 단일 플랫폼에서 모든 빅데이터 워크로드를 처리한다.
  3. 판단 포인트: MapReduce는 디스크 I/O 기반으로 반복 연산에 부적합하므로, ML·그래프·스트리밍 처리는 Spark를 사용하고, Hadoop 생태계(HDFS, YARN, Hive)는 Spark의 인프라로 활용하는 것이 현대 빅데이터 아키텍처의 표준이다.

Ⅰ. 개요 및 필요성

1.1 빅데이터 처리의 도전

2000년대 인터넷 서비스 폭발로 구글은 하루 수십억 건의 웹 페이지를 크롤링·색인해야 했다. 단일 서버로는 이 규모를 처리할 수 없어, 구글은 2003년 GFS(Google File System) 논문과 2004년 MapReduce 논문을 발표했다. 이를 오픈소스로 구현한 것이 Doug Cutting이 만든 Apache Hadoop(2006)이다.

하둡은 "100대의 저렴한 PC로 1대의 슈퍼컴퓨터를 대체한다"는 철학으로, 범용 서버에 데이터를 분산 저장하고 데이터가 있는 곳에서 직접 처리(Data Locality)하는 패러다임을 구현했다.

1.2 Hadoop 핵심 구성 요소

구성 요소역할
HDFS분산 파일 시스템. 파일을 128MB 블록으로 분할, 3중 복제 저장
MapReduce분산 연산 프레임워크. Map(병렬 변환) + Reduce(집계)
YARN (Yet Another Resource Negotiator)클러스터 자원 관리. CPU·메모리 할당
HiveSQL 형태 쿼리를 MapReduce로 변환 (HiveQL)
HBaseHDFS 위의 NoSQL 컬럼 패밀리 DB
ZooKeeper분산 코디네이션 서비스

📢 섹션 요약 비유: Hadoop 클러스터는 거대한 개미 군집이다. 여왕개미(NameNode)가 먹이(데이터) 위치를 기억하고, 수백만 일개미(DataNode)가 각자 맡은 구역에서 동시에 먹이를 수집·운반한다. 한 마리 개미가 죽어도(노드 장애) 군집은 멈추지 않는다.


Ⅱ. 아키텍처 및 핵심 원리

2.1 HDFS와 MapReduce 처리 흐름

┌─────────────────────────────────────────────────────────────┐
│           Hadoop HDFS + MapReduce Architecture              │
│                                                             │
│  HDFS 저장 구조:                                            │
│  ┌──────────────────────────────────────────────────────┐  │
│  │  NameNode (메타데이터 관리)                           │  │
│  │  - 파일명, 블록 위치, 복제 정보 관리                  │  │
│  └────────────────┬─────────────────────────────────────┘  │
│                   │                                         │
│  ┌────────────────▼─────────────────────────────────────┐  │
│  │ DataNode-1  │ DataNode-2  │ DataNode-3  │ DataNode-4 │  │
│  │ [Block A-1] │ [Block A-2] │ [Block A-1] │ [Block B-1]│  │
│  │ [Block B-2] │ [Block A-3] │ [Block B-3] │ [Block A-2]│  │
│  └──────────────────────────────────────────────────────┘  │
│                   복제 계수: 3 (기본값)                      │
│                                                             │
│  MapReduce 처리 흐름:                                       │
│  ┌─────────┐  Map  ┌──────────┐ Shuffle ┌──────────────┐  │
│  │ Input   │──────►│ Mapper   │────────►│ Reducer      │  │
│  │ Splits  │       │ (병렬)   │ Sort    │ (집계)       │  │
│  │(HDFS블록)│       │ K,V 출력 │         │ 최종 결과    │  │
│  └─────────┘       └──────────┘         └──────────────┘  │
│                                                             │
│  ※ 각 Map/Reduce 단계 사이에 디스크 I/O 발생 → 속도 한계  │
└─────────────────────────────────────────────────────────────┘

2.2 Apache Spark 인메모리 처리 원리

Spark는 MapReduce의 단계 간 디스크 I/O 문제를 인메모리 RDD로 해결했다. 중간 결과를 RAM에 보관하여 반복 연산(ML 학습, 그래프 처리)에서 MapReduce 대비 10~100배 성능을 낸다.

API 레벨설명최적화
RDD (Resilient Distributed Dataset)저수준 불변 분산 컬렉션수동 최적화 필요
DataFrame스키마 있는 분산 테이블Catalyst 옵티마이저 자동 최적화
Dataset타입 안전 DataFrame (Scala/Java)컴파일 타임 타입 검사

2.3 Spark 통합 엔진 아키텍처

모듈기능활용
Spark CoreRDD 분산 처리 기반범용 배치 처리
Spark SQLSQL + DataFrame 분석데이터 분석, ETL
Spark StreamingDStream/Structured Streaming실시간 스트리밍
MLlib분산 ML 알고리즘 라이브러리대용량 ML 학습
GraphX분산 그래프 처리소셜 네트워크, 추천

📢 섹션 요약 비유: MapReduce는 도서관에서 책을 찾을 때마다 서고에서 꺼내 책상에 놓고 읽은 뒤 다시 서고에 반납하는 방식(디스크 I/O)이고, Spark는 자주 보는 책들을 모두 책상 위에 펼쳐두고(인메모리) 빠르게 오가며 읽는 방식이다.


Ⅲ. 비교 및 연결

3.1 Hadoop MapReduce vs Apache Spark

항목Hadoop MapReduceApache Spark
처리 속도배치 중심, 디스크 I/O로 느림인메모리로 10~100배 빠름
프로그래밍Java 중심, 복잡한 코드Python/Scala/R/Java, 간결한 API
처리 유형배치만 지원배치+스트리밍+ML+그래프 통합
결함 허용HDFS 복제, 재시작RDD 리니지 기반 재계산
메모리 요구낮음높음 (인메모리 특성)
활용대용량 배치 ETLML, 스트리밍, 반복 연산

3.2 현대 빅데이터 아키텍처 스택

계층역할도구
스토리지분산 파일 시스템HDFS, S3, GCS
컴퓨팅분산 처리 엔진Spark, Flink, Hive
자원 관리클러스터 자원 조율YARN, Kubernetes
오케스트레이션작업 스케줄링·의존성Airflow, Oozie
데이터 수집스트리밍 수집Kafka, Flume, Sqoop
쿼리SQL 인터페이스Hive, Presto, Spark SQL

📢 섹션 요약 비유: Hadoop 생태계는 거대한 도시 인프라와 같다. HDFS는 도로망, MapReduce/Spark는 대중교통 시스템, YARN은 교통 관제 센터, Kafka는 물류 허브, Hive는 GPS 네비게이션이다. 각 구성 요소가 역할을 분담하며 페타바이트 도시를 운영한다.


Ⅳ. 실무 적용 및 기술사 판단

4.1 Spark Structured Streaming 예시

# Kafka → Spark Streaming → 실시간 집계
from pyspark.sql import SparkSession
from pyspark.sql.functions import window, count

spark = SparkSession.builder.appName("RealTimeOrders").getOrCreate()

# Kafka에서 실시간 주문 스트림 읽기
orders = spark.readStream \
    .format("kafka") \
    .option("kafka.bootstrap.servers", "kafka:9092") \
    .option("subscribe", "orders") \
    .load()

# 1분 윈도우별 주문 수 집계
agg = orders.withWatermark("timestamp", "2 minutes") \
    .groupBy(window("timestamp", "1 minute"), "product_id") \
    .agg(count("*").alias("order_count"))

# 결과 Snowflake에 저장
query = agg.writeStream \
    .outputMode("update") \
    .format("snowflake") \
    .start()

4.2 성능 최적화 핵심 기법

기법설명효과
파티셔닝 (Partitioning)데이터를 균등 분할하여 병렬성 극대화CPU 활용률 향상
캐싱 (Caching)반복 사용 RDD/DataFrame 메모리 캐싱재계산 제거
브로드캐스트 조인소형 테이블을 모든 노드에 복사Shuffle 비용 제거
Catalyst 옵티마이저쿼리 실행 계획 자동 최적화코드 없이 성능 향상
Tungsten메모리 관리·코드 생성 JVM 최적화JVM GC 부담 감소

4.3 기술사 핵심 출제 포인트

  • HDFS 3중 복제 원리: NameNode 역할, DataNode 블록 복제, 장애 복구
  • MapReduce vs Spark 성능 차이 원인: 디스크 I/O vs 인메모리
  • RDD → DataFrame → Dataset API 진화: 각 레벨의 특징과 트레이드오프
  • Spark 통합 엔진 모듈: Spark SQL, MLlib, Streaming, GraphX

📢 섹션 요약 비유: Spark Catalyst 옵티마이저는 내비게이션 AI와 같다. 목적지(결과)가 같더라도 "현재 교통 상황과 도로 구조를 분석해 가장 빠른 경로"를 자동으로 계산한다. 개발자가 최적 경로를 일일이 지정하지 않아도, AI가 항상 최단 경로를 찾는다.


Ⅴ. 기대효과 및 결론

5.1 Spark 도입 효과

효과내용
처리 속도MapReduce 대비 배치 10배, 인메모리 반복 연산 100배 향상
통합 플랫폼배치·스트리밍·ML·그래프를 단일 엔진으로 처리
개발 생산성Python/SQL API로 데이터 과학자 직접 활용 가능
클라우드 네이티브EMR, Databricks, GCP Dataproc으로 서버리스 운영
실시간 확장Structured Streaming으로 밀리초 단위 처리

5.2 Hadoop vs Spark 공존 현황

Hadoop HDFS는 여전히 대용량 데이터 저장 인프라로 사용되지만, MapReduce는 Spark로 사실상 대체됐다. 클라우드 환경에서는 HDFS 대신 S3/GCS를 스토리지로, Spark를 컴퓨팅 엔진으로, Kubernetes를 자원 관리로 사용하는 클라우드 네이티브 빅데이터 스택이 표준이 되고 있다.

📢 섹션 요약 비유: Hadoop은 도시의 기반 인프라(도로·수도·전기)고, Spark는 그 위를 달리는 전기차다. 전기차(Spark)가 압도적으로 빠르고 효율적이지만, 도로 인프라(HDFS)가 있어야 달릴 수 있다. 클라우드 시대에는 도로도 임대(S3/GCS)하고, 전기차(Spark)만 직접 운영하는 방식이 대세다.


📌 관련 개념 맵

개념설명연관 키워드
HDFS하둡 분산 파일 시스템, 블록 복제 저장NameNode, DataNode, 3중 복제
MapReduceMap(병렬 변환) + Reduce(집계) 분산 연산디스크 I/O, 배치 처리
Apache Spark인메모리 분산 처리 엔진RDD, DataFrame, MLlib
RDD (Resilient Distributed Dataset)Spark 핵심 분산 데이터 추상화불변성, 리니지, 재계산
Catalyst OptimizerSpark SQL 쿼리 자동 최적화 엔진실행 계획, 코드 생성
YARN (Yet Another Resource Negotiator)하둡 클러스터 자원 관리컨테이너, AM, NM
DatabricksSpark 기반 통합 분석 플랫폼Delta Lake, MLflow
Data Locality데이터 있는 곳에서 연산 수행 원칙네트워크 I/O 최소화

👶 어린이를 위한 3줄 비유 설명

  1. HDFS는 커다란 책을 여러 조각으로 나눠 여러 친구 집에 보관하는 방식이야. 한 집에 불이 나도(노드 장애) 다른 집에 같은 조각이 있어서(3중 복제) 책을 잃어버리지 않아.
  2. MapReduce는 운동회 줄넘기 기록을 반 별로 세고(Map), 마지막에 전체 합산하는(Reduce) 방식이야. 그런데 매 단계마다 칠판에 쓰고 지우는(디스크 I/O) 시간이 걸려서 느려.
  3. Spark는 칠판 대신 각 팀이 기억(메모리)으로 중간 결과를 가지고 있어서, 마지막에 딱 한 번만 칠판에 적는(디스크 저장) 방식이라 훨씬 빠르고 ML 같은 반복 연산에 강해.