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