Notice
Recent Posts
Recent Comments
Link
sean.log
Hadoop 이론 본문
Hadoop이란?

Hadoop: 대규모 데이터 처리를 위한 분산처리 오픈소스 프레임워크
고가의 고성능 컴퓨터 1대 대신 저렴한 범용 컴퓨터 여러대를 클러스터로 구성하고, 큰 크기의 데이터를 나누어 병렬 처리함으로써 처리 속도를 높일 수 있다
⇒ Hadoop의 핵심 키워드: HDFS, MapReduce, YARN
- 예: Hadoop을 택배 시스템으로 설명한다면?
- HDFS = 물류 창고 (데이터 저장소)
- MapReduce = 택배 포장 & 배송 작업 (데이터 처리)
- YARN = 물류 센터 관리자 (리소스 관리 및 배분)
HDFS (Hadoop Distributed File System)
HDFS: 대용량 데이터를 작게 잘라 분산 저장하는 스토리지
- HDFS는 하나의 큰 파일을 작은 조각으로 나누어 저장하는데, 이 조각을 블록이라고 한다
아키텍처



데이터 쓰기(Write) 과정

- 클라이언트가 데이터 저장을 요청한다
- 클라이언트는 NameNode에 먼저 접근하여 저장할 공간을 확인한다
- NameNode는 파일을 블록 단위로 나눌 계획을 세우고, 각 블록을 어느 DataNode에 저장할지 결정한다
- NameNode가 저장할 DataNode 목록을 클라이언트에게 제공한다
- 클라이언트가 DataNode에 직접 데이터를 저장한다
- 하나의 파일이 여러 블록으로 나뉘어 여러 DataNode에 저장된다
- 클라이언트가 첫 번째 DataNode에 블록을 전송하면 해당 노드는 두 번째, 세 번째 DataNode로 복제본을 전파한다
- 모든 복제본이 저장되면, DataNode → NameNode → 클라이언트 순으로 저장 완료 여부를 전달한다
데이터 읽기(Read) 과정

- 클라이언트가 NameNode에 읽기 요청을 보낸다
- NameNode가 각 블록이 저장된 DataNode 위치 목록을 반환한다
- 클라이언트가 DataNode에서 직접 데이터를 읽는다
- 복제본 중 하나에서 데이터를 읽는다
- 이때 가장 가까운 노드 선택이 가능하기 때문에 성능이 최적화된다
MapReduce
MapReduce: Hadoop의 핵심 연산 방식으로, 데이터를 작은 조각으로 분할해 병렬로 처리하고, 결과를 집계하는 분산 처리 모델
- HDFS, YARN 위에서 동작한다
동작 과정

- Map: 데이터 분할 & 처리
- 입력 데이터를 작은 조각으로 분할하여 병렬 처리한다
- 각 조각은 <Key, Value> 쌍으로 변환된다
- Map 함수는 데이터를 가공하거나 필요한 정보를 추출한다
- Shuffle & Sort
- Map 단계에서 나온 중간 결과를 키 기준으로 정렬한다 (같은 키를 가진 값들을 하나로 모음)
- 이 과정은 Hadoop 내부에서 자동 처리됨
- Reduce: 결과 합산
- 정렬된 데이터를 받아 같은 키의 값들을 병합한다
- Reduce 함수가 최종 집계나 요약 결과를 생성한다
MR1 vs MR2 (왜 YARN이 필요할까?)
MapReduce의 초기 버전(MR1)에는 심각한 구조적 문제점이 존재했다
이때 YARN과 함께 어떻게 문제점을 해결했는지 확인해보자
기존 MR1 (Hadoop 1.x) 방식
단일 중앙 관리자, JobTracker가 클러스터 전체의 리소스 관리와 작업 관리(스케줄링, 모니터링)까지 모두 맡는 구조
⇒ 확장성에 제한이 생기고, 클러스터가 커질수록 심각한 병목 현상이 발생

YARN 기반 MR2 (Hadoop 2.x) 방식

MapReuce의 한계
- Hadoop(MapReduce)는 연산이 끝날 때마다 HDFS에 중간 데이터를 저장하고, 다시 읽는 과정을 반복한다. 이때 느린 속도 때문에 I/O 병목이 발생한다
- +) 실시간 데이터 처리에 대한 니즈 증가
⇒ 데이터를 메모리에 유지하면서 반복적으로 처리할 수 있는 인메모리 처리 기반의 Spark 등장!

'분산 시스템' 카테고리의 다른 글
| Spark 이론 (1) | 2026.02.04 |
|---|---|
| CAP Theorem & PACELC Theorem (0) | 2025.11.30 |