8. 분산처리를 위한 기반기술
MapReduce GFS
방대한 양의 Data 효율적인 처리
MapReduce?
Map + Reduce !
9. Map
어떤 data의 집합을 받아들여 새로운 data를 처리하는 기술
< 키, 값 > → < 키’, 값’ >*
주어진 키를 사용하여 새로운 키와 값을 원하는 만큼 생성
Map(2배, [1,2,3]) → [2,4,6]
Reduce
Map에 의해 만들어진 data를 모아서 최종적으로 원하는
결과로 만들어내는 Process
< 키’, 값’ *> → 값’’*
같은 키의 값을 하나로 통합 시킴
Reduce(덧셈, [2,4,6]) → 12
10. 역 Index
docID = 1
wordID docID 위치
벚꽃학교의 페이지 101 1 1
2 1
docID = 2
201 1 2
단풍학교의 페이지 단어 wordID
2 2
학교 101
203 1 3
의 201
2 3
페이지 203
301 1 0
벚꽃 301
302 2 0
단풍 302
Shuffle Reduce
Map의 출력
키 값(wordID = docID:위치, …)
키 키 값(docID:위치)의 List
값(docID) 값(docID) (wordID)
(wordID) (wordID) 101 = 1:1 2:1
101 1:1 2:1
301 1:0 302 2:0 201 = 1:2 2:2
201 1:2 2:2
101 1:1 101 2:1 203 = 1:3 2:3
203 1:3 2:3
201 1:2 201 2:2 301 = 1:0
301 1:0
203 1:3 203 2:3 302 = 2:0
302 2:0
12. Map → Reduce → Shuffle
Map
새로운 키와 값을 출력
Worker에서 중간 file로 저장
Combiner : 중간 file을 쓰기 전에 Reduce한번 진행
Shuffle
Map의 출력을 정리하여 같은 키의 값을 모음
Map과 병행해서 진행됨
Reduce
같은 키를 가진 모든 값이 모이면 Reduce를 호출
13. 16~64MB
입력 파일 입력 1 입력 2 … 입력 M
Map Map … Map
중간 파일 1 2 … 1 2 … R 2 … R
Shuffle Shuffle Shuffle
Reduce Reduce Reduce
출력 파일 출력1 출력1 출력1
14. Counter
Map의 출력을 < 키, “1”> -> Reduce에서 “1” 개수 파악
Key를 증가시킴으로 종류가 다양해짐, 여러 가지 출현 빈도 파악 가능
분산 Grep
Grep : File에서 특정 문자열을 포함하는 행을 찾는 Program
분산 Sort
Shuffle 과정에서 data가 key의 순서대로 정렬됨을 이용
역 Link List
Map에 Web Page의 URL과 HTML 전달
< 자신의 URL, 링크한 곳의 URL >
Web Page별로 링크하고 있는 곳의 List 얻음
15. System 구성
수 백에서 수 천대의 machine
분산 Parameter
M Parameter : 입력 파일을 분할하는 숫자
R Parameter : 중간 파일을 분할하는 숫자
Locality
Split → Chunk
Master는 Chunk의 처리를 가능한 Chunk를 가지고
있는 Chunk Server와 동일한 Machine에 할당
16. Work Queue
Locality로 인해 Worker각각의 작업량에 편차 발생
Cluster내에 있는 모든 Machine의 CPU부하와 Disk부
하를 감시하고 있다가 부하가 적게 걸려 잇는
Machine에게 Master를 할당
Backup Master
Backup Task
Map과 Reduce가 얼마 남지 않았을 경우 동일한 처
리를 복수의 Machine에서 동시에 실행
17. ① Map처리가 시작
② Shuffle이 시작 M M
③ Shuffle이 계속
M
④ Reduce처리가 시작
⑤ Reduce에 의한 출력 M
⑥ MapReduce의 완료
18. ① Map처리가 시작
② Shuffle이 시작 M M
③ Shuffle이 계속
M S
④ Reduce처리가 시작
⑤ Reduce에 의한 출력 S M
⑥ MapReduce의 완료
19. ① Map처리가 시작
② Shuffle이 시작 M S
③ Shuffle이 계속
S S
④ Reduce처리가 시작
⑤ Reduce에 의한 출력 S S
⑥ MapReduce의 완료
20. ① Map처리가 시작
② Shuffle이 시작 S S
③ Shuffle이 계속
S R
④ Reduce처리가 시작
⑤ Reduce에 의한 출력 R S
⑥ MapReduce의 완료
21. ① Map처리가 시작
② Shuffle이 시작 R R
③ Shuffle이 계속
R R
④ Reduce처리가 시작
⑤ Reduce에 의한 출력 R S
⑥ MapReduce의 완료
22. ① Map처리가 시작
② Shuffle이 시작 R
③ Shuffle이 계속
④ Reduce처리가 시작
⑤ Reduce에 의한 출력 R
⑥ MapReduce의 완료
23. Sawzall?
Sawzall – 처리도
Specification
Command
Protocol Buffer
표준 Aggregator
실제 사용
실행 시간
24. 분산 처리를 위해 고안된 DSL
DSL(Domain-Specific Language), 특정 도메인 언어
RDB의 SQL과 흡사
GFS와 MapReduce를 기반으로 하는 언어
Map → Filter
Reduce → Aggregator
키와 값의 구별이 없음
Filter에 의해 선택된 값이 Aggregator로 정리
25.
26. 정적인 유형의 절차형 Programming
기본적인 기능만 지원 → 객체지향 X
Interpreter → 사전 Compile 불필요
한 번 Sawzall을 실행하면 몇천 대의 machine이
움직이기 때문에 사전 체크가 중요
27. saw command
인수- -program : Program이 작성된 파일을 지정
인수- -workqueue : program실행할 work queue
cluster 이름 지정
인수- -input_files : 입력 파일 지정
인수- -destination : 출력 파일 지정
dump command
인수- -source : saw command에서 사용한 출력 파일
지정
인수- -format : 출력 형식 지정
28. Record
한 번에 읽어 들이는 data의 단위
Protocol Buffer
쓰는 쪽과 읽는 쪽의 record형식의 통일
Google 내부에서 읽기/쓰기가 가능한 data
는 Protocol Buffer에 의해 통일됨
Process 간 데이터 교환
29. Collection
Emit된 값을 모두 그대로 모음
Sample
일부 값만을 불규칙적으로 꺼냄 – data sampling
Sum
Maximum
Weight
Top
가장 많이 등장하는 값을 찾음
출현 횟수의 조사
기타 Agrregator
Quantile
Unique
30. 평균값과 분산
입력 파일에서 다수의 수치 → 평균, 분산
Page Rank
Domain별로 Page Rank가 가장 높은 Web Page
지역별 access 수
전 세계의 검색 요청 로그를 분석, 이용자의 장소
별 검색 수 측정