4 구글의 분산 데이터 처리
TRANSCRIPT
Google 을 지탱하는 기술 4 장 Google 의 분산 Data 처리
Sky
Contents
Review
MapReduce
Sawzall
Review – 초기의 System
SearchServer 단어 처리
DocIndex
Lexicon
Bar-rels
Crawler
Crawler
Crawler
URL-list
Links
Reposi-tory
구조 해석
Link 처리
Ranking
URL Server
⑩
⑨
⑧
⑦
⑥
⑤
④
③②
①
Review – 분산 System
Rack Cluster Data Center
PC PC
PC PC
Switch
PC
PC
PC
PC
Clus-ter
Clus-ter
ClusterCluster
Cluster
Review – 진화된 System
검색요청 LB GWS
Index Server
GWS
Document ServerGWS
검색결과
Good
이용자의 검색요청 분석
Index 검색 후 목록 반환
정 보 생 성HTML 로 정리
Ranking결과 반영
Shard Cluster
Review – GFS, Bigtable, Chubby
Client
Master
GFS
Chubby
TabletServer
TabletServer
TabletServer
Client
H
ChunkServer
ChunkServer
D D
Master
< GFS > < Bigtable >
MapReduce분산 처리를 위한 기반 기술
MapReduce
MapReduce – Ex
MapReduce – 전체 모습
3 단계 처리
분산 처리
Usage
고속화
실행 과정
MapReduce
분산처리를 위한 기반기술
MapReduce? Map + Reduce !
MapRe-duce
G F S
방대한 양의 Data 효율적인 처리
MapReduce
Map 어떤 data 의 집합을 받아들여 새로운 data 를 처리하는 기술 < 키 , 값 > → < 키’ , 값’ >* 주어진 키를 사용하여 새로운 키와 값을 원하는 만큼 생성 Map(2 배 , [1,2,3]) → [2,4,6]
Reduce Map 에 의해 만들어진 data 를 모아서 최종적으로 원하는
결과로 만들어내는 Process < 키’ , 값’ *> → 값’’ * 같은 키의 값을 하나로 통합 시킴 Reduce( 덧셈 , [2,4,6]) → 12
MapReduce – Ex
단어 wor-dID
학교 101
의 201
페이지 203
벚꽃 301
단풍 302
wor-dID
do-cID
위치
101 1 1
2 1
201 1 2
2 2
203 1 3
2 3
301 1 0
302 2 0
벚꽃학교의 페이지
단풍학교의 페이지
docID = 2
docID = 1
키(wordI
D)
값(docID)
301 1:0
101 1:1
201 1:2
203 1:3
역 Index
키(wordI
D)
값(docID)
302 2:0
101 2:1
201 2:2
203 2:3
Map 의 출력키
(wordID)
값 (docID: 위치 ) 의 List
101 1:1 2:1
201 1:2 2:2
203 1:3 2:3
301 1:0
302 2:0
값 (wordID = docID:위치 , …)
101 = 1:1 2:1
201 = 1:2 2:2
203 = 1:3 2:3
301 = 1:0
302 = 2:0
Shuffle Reduce
MapReduce – 전체 모습
Master
GFS
Map
Worker
GFS
Worker
Map
Re-duce
Re-duce
3 단계 처리
Map → Reduce → Shuffle
Map 새로운 키와 값을 출력 Worker 에서 중간 file 로 저장 Combiner : 중간 file 을 쓰기 전에 Reduce 한번 진행
Shuffle Map 의 출력을 정리하여 같은 키의 값을 모음 Map 과 병행해서 진행됨
Reduce 같은 키를 가진 모든 값이 모이면 Reduce 를 호출
분산 처리
입력 1 입력 2 … 입력 M
16~64MB
입력 파일
Map Map Map
1 2 1 2 R 2 R…
…
… …중간 파일
Shuf-fle
Re-duce
Shuf-fle
Re-duce
Shuf-fle
Re-duce
출력 1 출력 1 출력 1출력 파일
Usage
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 얻음
고속화
System 구성 수 백에서 수 천대의 machine
분산 Parameter M Parameter : 입력 파일을 분할하는 숫자 R Parameter : 중간 파일을 분할하는 숫자
Locality Split → Chunk Master 는 Chunk 의 처리를 가능한 Chunk 를 가지고
있는 Chunk Server 와 동일한 Machine 에 할당
고속화
Work Queue Locality 로 인해 Worker 각각의 작업량에 편차 발생 Cluster 내에 있는 모든 Machine 의 CPU 부하와
Disk 부하를 감시하고 있다가 부하가 적게 걸려 잇는 Machine 에게 Master 를 할당
Backup Master Backup Task Map 과 Reduce 가 얼마 남지 않았을 경우 동일한
처리를 복수의 Machine 에서 동시에 실행
실행 과정
① Map 처리가 시작
② Shuffle 이 시작
③ Shuffle 이 계속
④ Reduce 처리가 시작
⑤ Reduce 에 의한 출력
⑥ MapReduce 의 완료
M M
M
M
실행 과정
① Map 처리가 시작
② Shuffle 이 시작
③ Shuffle 이 계속
④ Reduce 처리가 시작
⑤ Reduce 에 의한 출력
⑥ MapReduce 의 완료
M M
M S
S M
실행 과정
① Map 처리가 시작
② Shuffle 이 시작
③ Shuffle 이 계속
④ Reduce 처리가 시작
⑤ Reduce 에 의한 출력
⑥ MapReduce 의 완료
M S
S S
S S
실행 과정
① Map 처리가 시작
② Shuffle 이 시작
③ Shuffle 이 계속
④ Reduce 처리가 시작
⑤ Reduce 에 의한 출력
⑥ MapReduce 의 완료
S S
S R
R S
실행 과정
① Map 처리가 시작
② Shuffle 이 시작
③ Shuffle 이 계속
④ Reduce 처리가 시작
⑤ Reduce 에 의한 출력
⑥ MapReduce 의 완료
R R
R R
R S
실행 과정
① Map 처리가 시작
② Shuffle 이 시작
③ Shuffle 이 계속
④ Reduce 처리가 시작
⑤ Reduce 에 의한 출력
⑥ MapReduce 의 완료
R
R
Sawzall분산처리용 Programing
언어
Sawzall?
Sawzall – 처리도
Specification
Command
Protocol Buffer
표준 Aggregator
실제 사용
실행 시간
Sawzall?
분산 처리를 위해 고안된 DSL DSL(Domain-Specific Language), 특정
도메인 언어 RDB 의 SQL 과 흡사 GFS 와 MapReduce 를 기반으로 하는
언어 Map → Filter Reduce → Aggregator
키와 값의 구별이 없음 Filter 에 의해 선택된 값이 Aggregator 로 정리
Sawzall – 처리도
Specification
정적인 유형의 절차형 Programming
기본적인 기능만 지원 → 객체지향 X
Interpreter → 사전 Compile 불필요
한 번 Sawzall 을 실행하면 몇천 대의 ma-chine 이 움직이기 때문에 사전 체크가 중요
Command
saw command 인수 - -program : Program 이 작성된 파일을 지정 인수 - -workqueue : program 실행할 work queue
cluster 이름 지정 인수 - -input_files : 입력 파일 지정 인수 - -destination : 출력 파일 지정
dump command 인수 - -source : saw command 에서 사용한 출력 파일
지정 인수 - -format : 출력 형식 지정
Protocol Buffer
Record 한 번에 읽어 들이는 data 의 단위
Protocol Buffer 쓰는 쪽과 읽는 쪽의 record 형식의 통일
Google 내부에서 읽기 / 쓰기가 가능한 data 는 Protocol Buffer 에 의해 통일됨
Process 간 데이터 교환
표준 Aggregator
Collection Emit 된 값을 모두 그대로 모음
Sample 일부 값만을 불규칙적으로 꺼냄 – data sampling
Sum Maximum
Weight Top
가장 많이 등장하는 값을 찾음 출현 횟수의 조사
기타 Agrregator Quantile Unique
실제 사용
평균값과 분산 입력 파일에서 다수의 수치 → 평균 , 분산
Page Rank Domain 별로 Page Rank 가 가장 높은 Web
Page
지역별 access 수 전 세계의 검색 요청 로그를 분석 , 이용자의 장소
별 검색 수 측정
실제 사용
실행 시간
Q & A
감사합니다