
[ "하둡 완벽 가이드 4판" ] 공부한 후 정리한 내용 입니다
2. 맵 리듀스
1) 맵 리듀스
- 맵리듀스(MapReduce): 대용량 데이터를 병렬로 처리하는 프로그래밍 모델
- 핵심 아이디어:
- 데이터를 작은 조각(split) 으로 나누기
- 여러 컴퓨터(노드)에서 동시에 처리
- 결과를 합쳐 최종 값 계산
2) 기상 데이터 분석 ( 예시 )
- 수만 개 관측소 → 수 많은 작은 파일 존재
- 문제: 하둡은 작은 파일 처리 비효율 → 큰 파일이 처리하기 좋음 → 적당한 수준으로 파일 병합 필요
1. 유닉스 도구로 처리
- for문으로 연도별 파일 읽고, awk로 최고 기온 계산
- 단일 머신 처리: 40분 소요
- 병렬 처리 필요 → 하드웨어 스레드 사용 가능
- 문제점:
- 작업 단위 균일화 어려움 → 작은 파일은 금방 끝나고 큰 파일은 오래 걸림 → 해결: 데이터를 고정 길이 청크로 나누고 각 청크를 프로세스에 할당
- 각 프로세스 결과를 합치고 연도 기준 정렬 필요
- 여러 머신 사용 시 코디네이션, 신뢰성 관리 필요 → 해결: 하둡과 같은 프레임워크 사용
3) 하둡에서 맵 리듀스 처리
1. Map & Reduce
- 입력/출력 = 키(Key)-값(Value) 쌍
-- 원본 데이터 --
2025-09-01 25℃
2025-09-02 26℃
2025-09-03 24℃
...
-- 맵 함수 입력 --
(0, "2025-09-01 25℃")
(15, "2025-09-02 26℃")
(30, "2025-09-03 24℃")
...
key = 파일 시작 위치 ( 바이트 ), offset
value = 해당 행 텍스트
-- 맵 합수( 데이터 준비 ) 출력 → 연도와 기온 추출 --
("2025", 25)
("2025", 26)
("2025", 24)
...
key = 연도
value = 기온
-- 리듀스 입력 → 키 기준 정렬 및 그룹화 --
("2024", [28, 30])
("2025", [25, 26, 24])
...
key = 연도
value = 기온 ( 그룹화 )
-- 리듀스 출력 → 최고 기온 계산 --
("2024", 30)
("2025", 26)
...
key = 연도
value = 기온
4) 하둡 분산 처리 구조
1. 작업 단위( Job )와 YARN
- Job → 여러 Map Task + Reduce Task로 분할
- YARN → Task를 노드에 배분하고 실행 관리
- Task 실패 → 다른 노드에서 자동 재실행
2. 데이터 지역성 ( Data Locality )
- 데이터가 있는 노드에서 처리 → 네트워크 사용 최소화
- 최적 스플릿 크기 = HDFS 블록 크기(128MB)
- 스플릿이 블록 두 개 이상 걸치면 데이터 일부를 네트워크로 가져와야 함 → 속도 저하 ( 네트워크 병목 )
3. 맵 결과 처리
- 맵 출력 → 로컬 디스크에 임시 저장
- 리듀스 입력 → 모든 맵 결과 병합
- 리듀스 출력 → HDFS 저장, 첫 복제 자기 노드, 나머지는 외부 노드
5) 파티셔닝( Partitioning )
- 리듀스 개수에 따라 맵 결과가 여러 파티션으로 나뉨
- 같은 키는 항상 같은 파티션 → 같은 리듀스로 전달
- 사용자 정의 파티셔닝 가능 (기본: 해시 함수)
- 리듀스 개수를 늘리면 더 작은 파티션 생성 → 병렬 처리 효율 증가
-- 예시 --
Mapper 결과: ("2024",30), ("2025",25), ("2024",28), ("2025",26), ("2026",27)
파티션1 → "2024", "2026"
파티션2 → "2025"
6) 컴바이너 함수
- Mapper와 Reducer 사이에서 중간 데이터 미리 처리
- 목적: 데이터 전송량 감소
- 예시: 최고 기온 계산
- 맵 출력: (2024, 0), (2024, 10), (2024, 8)
- 컴바이너 적용 → (2024, 10)만 Reducer로 전달
- 주의: Reducer 최종 결과 동일 보장 필수
- 사용 가능: 합/최대/최소 등 결합 가능(associative) 연산
7) 분산 맵 리듀스 실행
- 클러스터 10개 노드 → 전체 처리 시간 6분
- [ 노드 수 ↑ → 처리 시간 ↓ ] & [ 노드 수 ↓ → 처리 시간 ↑ ]
- 강점:
- 대용량 데이터 분산 처리 가능
- 확장성 뛰어남 → 하드웨어 자원 활용 가능
- 안정성 → Task 실패 시 자동 재실행

1. 맵리듀스 구조: Map(데이터 준비) → Shuffle/Sort → Reduce(결과 계산)
2. 스플릿 크기 = HDFS 블록 크기 → 데이터 지역성 최적
3. 컴바이너 = 중간 결과 최적화 → 데이터 전송량 감소
4. 파티셔닝 → 리듀스 개수/키에 따라 데이터 분배, 병렬 처리 효율 증가
5. YARN → 작업 스케줄링 및 실패 처리 관리'데이터 엔지니어( 실습 정리 ) > hadoop' 카테고리의 다른 글
| 5. 하둡 I/O ( 하둡 기초 ) (0) | 2025.12.17 |
|---|---|
| 4. Yarn ( 하둡 기초 ) (0) | 2025.10.11 |
| 3. 하둡 분산 파일 시스템 ( 하둡 기초 ) (2) | 2025.09.15 |
| 1. 하둡과의 만남 ( 하둡 기초 ) (0) | 2025.09.02 |