맵리듀스 기본

Download Report

Transcript 맵리듀스 기본

Introduction to Big Data, Summer, 2013
Map/Reduce
Mincheol Shin
연세대학교
Yonsei
University
Index
1. 맵리듀스 기본
1.
2.
맵리듀스 기본
맵리듀스 예제: Word Count
2. 하둡 맵리듀스
1.
2.
3.
하둡 맵리듀스 구성 요소
맵퍼 (Mapper)
리듀서 (Reducer)
2
1.1 맵리듀스 개념
• 맵리듀스 (Google에서 제안)
– 큰 데이터를 나누어서 여러 개의 Machine에서 처리하는 프로그래
밍 모델
• 맵
– 입력 데이터를 key-value pair로 변경
• “key1 – value1”, “key2 – value2”, “key1 – value3” “key3 – value4”
– 동일한 key를 갖는 key-value pair를 모아 key/value-list로 저장
• key1 – value1. value3. …
key2 – value2. value5, …
key3 – valuen+1. valuen+2, … , valuen+m
• 리듀스
– 사용자가 작성한 Reduce 함수에 따라 KV List를 가공
3
1.1 맵리듀스 개념
Worker
Mapper
Mapper
Mapper
Mapper
File G
Key1, value 1, … , value n1
Key2, value 1, … , value n2
Worker
Reducer
Key1, value 1, … , value n3
Key2, value 1, … , value n4
Key1, value 1, … , value n5
Worker
Reducer
Key2, value 1, … , value n6
Key1, value 1, … , value n7
Key2, value 1, … , value n8
File O
Hadoop Distributed File System
4
1.2 Word Count Example
• Word Count
– 문서에서 각 단어가 몇 번 나타나는지를 계산
하는 프로그램
• Map Function
– Input
• K: 문서의 이름, V: 문서의 내용
– Output
• K: word (중복제거 X), V: list of 1
– Process
• 문서를 단어 단위로 읽으며 읽은 단어를 key로,
value는 1로 설정
• Reduce Function
– Input
• K: word, V: list of “1”
– Output
• K: word, V: word가 나타난 개수
– Process
• 각 key 의 value를 모두 더함
5
1.2 Word Count Example: Map
Key/Value List
Document
Map, written by the
user, takes an input
pair.
The reduce, written
by the user, takes an
intermediate key and
a set of values for that
key.
Intermediate key/set of values
Map
1
user
1
Map
1
written
1
takes
1
written
1
1
by
1
an
1
by
1
1
the
1
the
1
1
user
1
1
takes
1
1
an
1
1
input
1
pair
1
reduce
1
interme
diate
1
user
1
takes
1
key
1
1
and
1
an
input
1
a
1
pair
1
set
1
the
1
of
1
reduce
1
values
1
written
1
for
1
by
1
that
1
the
1
key
1
1
interme
diate
1
key
1
and
1
a
1
set
1
of
1
values
1
for
1
that
1
1
Machine 1
Machine 2
6
1.2 Word Count Example: Reduce
Intermediate key/set of values
Map
1
written
1
1
by
1
1
the
1
1
user
1
1
takes
1
1
an
1
1
input
1
pair
reduce
1
1
Reducer
Map
1
a
1
written
2
set
1
by
2
of
1
the
3
values
1
user
2
for
1
1
takes
2
that
1
of
1
an
2
values
1
input
1
for
1
pair
1
that
1
reduce
1
interme
diate
1
key
2
and
1
interme
diate
1
key
1
and
1
a
1
set
1
1
7
2. 하둡 맵리듀스
1. 맵리듀스 기본
1.
2.
맵리듀스 기본
맵리듀스 예제: Word Count
2. 하둡 맵리듀스
1.
2.
3.
하둡 맵리듀스 구성 요소
맵퍼 (Mapper)
리듀서 (Reducer)
8
2.1 하둡 맵리듀스의 구성요소
• 태스크 (Task)
– 맵퍼나 리듀서가 수행하는 단위 작업 (맵 태스크, 리듀스 태스크)
– 맵 혹은 리듀스를 수행하기 위한 정보를 가지고 있음
• 맵퍼 (Mapper)
– 3 단계: 맵 (Map), 컴바인 (Combine), 파티션 (Partition)
• 리듀서 (Reducer)
– 셔플/정렬 (Shuffle/Sort), 리듀스(Reduce)
9
2.1 하둡 맵리듀스의 구성요소
• 잡 트래커 (Job Tracker)
– 마스터(Master)라고도 불림
– 클러스터에 1개
– 역할
• 각 슬레이브(slave)에 태스크(Task)를 할당
• 슬레이브 모니터링
• 실패한 태스크의 재실행
• 태스크 트래커(Task Tracker)
– 각 노드에 1개씩 존재
– 노드의 태스크를 실행
10
2.1 하둡 맵리듀스의 구성요소: Data Flow
Reduce Task
Reduce Task
Mapper
Output File
Shuffle
{k1, v1, … vn}
Partition
Combine
Reducer
Sort
Mapper
Reduce
Map
Partition
Reduce Task
Reduce Task
Combine
Reducer
Output File
{k1, v1, … vn}
Map
Shuffle
Sort
Map Task
Map Task
FileSplit
FileSplit
Reduce
File G
File O
Hadoop Distributed File System
11
2.2 매핑 프로세스
• 입력 파일
– HDFS에 있는 입력 파일을 분할하여 FileSplit을 생성
– FileSplit 하나 당 맵 태스크(Map Task) 하나씩을 생성
• 맵(Map)
– 데이터를 읽어와서 KV 페어(Key-value pair)를 생성
• 컴바인(Combine)
– 목적: I/O 와 네트워크 트래픽 감소
– 디스크에 쓰기 전에 KV 리스트(Key-value list)에 대한 전처리를 수행
• e.g. aggregation: Sum, count and etc
• 파티션(Partition)
– 키를 기준으로 디스크에 분할 저장.
• 해시 파티셔닝 (Hash Partioning)이 기본
– 각 파티션은 키를 기준으로 정렬이 됨
– HDFS가 아닌 맵퍼의 Local File System에 저장
– 분할된 각 파일은 각각 다른 리듀스 태스크(Reduce Task)에 저장됨
12
2.2 매핑 프로세스 예제: Word Count
Mapper
Doc Data
Map
Combine
Aggregated KV
List
KV List
Map
1
written
1
user
1
…
Map Task
FileSplit 1
Map Task
FileSplit 3
1
Local
File System
Partition
Hash
(key)
Buffers
Output File 2
1
1
…
Split file G into
4 file splits
File G
Output File 1
Map
3
Output File 3
written
1
Output File 4
user
2
…
Output File 5
Map Task
FileSplit 2
Map Task
FileSplit 4
File G
Hadoop Distributed File System
13
2.3 리듀싱 프로세스
• 셔플 (Shuffle)
– 여러 맵퍼에 있는 결과 파일을 각 리듀서에 할당
– 리듀서에 할당된 결과 파일을 리듀서의 로컬 파일 시스템으로 복
사
• 정렬 (Sort)
– 병합 정렬(Merge sort)를 이용하여 맵퍼 결과 파일을 정렬/병합
– Key로 정렬된 하나의 커다란 파일이 생성됨
• 리듀스 (Reduce)
– 정렬 단계에서 생성된 파일을 처음부터 순차적으로 읽으면서 리듀
스 함수를 수행
14
2.3 리듀싱 프로세스 예제: Word Count
Mapper 1
Local
File System
Reducer 1
Reduce Task 1
Reduce Task 2
Shuffle/
Copy
Sort
(Merge sort)
Reduce
Reduce Task 1
Seq File
Result
Reduce Task 2
Map
Map
1
written
written
1
Output File 1
Output File 2
Reduce Task 3
Output File 3
Output File 4
Output File 5
Reduce Task 4
Reduce Task 5
…
Reduce Task 3
Reduce Task 6
Reduce Task 7
Local
File System
Reduce Task 6
Reduce Task 7
Reducer 2
Reduce Task 8
Shuffle
Output File 3
Output File 4
Output File 5
…
5
8
Local File System
Output File 1
Output File 2
Map
written
4
…
Reduce Task 8
Mapper 2
2
Reduce Task 9
Reduce Task 10
Sort
Result
Reduce
User
…
3
7
Reduce
15
3. 요약
• 맵리듀스는
– 큰 데이터를 손쉽게 처리하기 위해 데이터를 분산 처리하는 프로
그래밍 모델
• 맵
– 인풋 데이터를 가공하여 사용자가 원하는 정보를 Key/Value 쌍으
로 변환
• 리듀스
– 가공된 Key/Value를 Key를 기준으로 각 리듀서로 분배
– 사용자가 정의한 방법으로 각 Key와 관련된 정보를 추출
16