4 구글의 분산 데이터 처리

33
Google 을 을을을을 을을 4 장 Google 장 장장 Data 장장 Sky

Upload: guest5c3f0b1

Post on 23-Jun-2015

1.327 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: 4 구글의 분산 데이터 처리

Google 을 지탱하는 기술 4 장 Google 의 분산 Data 처리

Sky

Page 2: 4 구글의 분산 데이터 처리

Contents

Review

MapReduce

Sawzall

Page 3: 4 구글의 분산 데이터 처리

Review – 초기의 System

SearchServer 단어 처리

DocIndex

Lexicon

Bar-rels

Crawler

Crawler

Crawler

URL-list

Links

Reposi-tory

구조 해석

Link 처리

Ranking

URL Server

③②

Page 4: 4 구글의 분산 데이터 처리

Review – 분산 System

Rack Cluster Data Center

PC PC

PC PC

Switch

PC

PC

PC

PC

Clus-ter

Clus-ter

ClusterCluster

Cluster

Page 5: 4 구글의 분산 데이터 처리

Review – 진화된 System

검색요청 LB GWS

Index Server

GWS

Document ServerGWS

검색결과

Good

이용자의 검색요청 분석

Index 검색 후 목록 반환

정 보 생 성HTML 로 정리

Ranking결과 반영

Shard Cluster

Page 6: 4 구글의 분산 데이터 처리

Review – GFS, Bigtable, Chubby

Client

Master

GFS

Chubby

TabletServer

TabletServer

TabletServer

Client

H

ChunkServer

ChunkServer

D D

Master

< GFS > < Bigtable >

Page 7: 4 구글의 분산 데이터 처리

MapReduce분산 처리를 위한 기반 기술

MapReduce

MapReduce – Ex

MapReduce – 전체 모습

3 단계 처리

분산 처리

Usage

고속화

실행 과정

Page 8: 4 구글의 분산 데이터 처리

MapReduce

분산처리를 위한 기반기술

MapReduce? Map + Reduce !

MapRe-duce

G F S

방대한 양의 Data 효율적인 처리

Page 9: 4 구글의 분산 데이터 처리

MapReduce

Map 어떤 data 의 집합을 받아들여 새로운 data 를 처리하는 기술 < 키 , 값 > → < 키’ , 값’ >* 주어진 키를 사용하여 새로운 키와 값을 원하는 만큼 생성 Map(2 배 , [1,2,3]) → [2,4,6]

Reduce Map 에 의해 만들어진 data 를 모아서 최종적으로 원하는

결과로 만들어내는 Process < 키’ , 값’ *> → 값’’ * 같은 키의 값을 하나로 통합 시킴 Reduce( 덧셈 , [2,4,6]) → 12

Page 10: 4 구글의 분산 데이터 처리

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 구글의 분산 데이터 처리

MapReduce – 전체 모습

Master

GFS

Map

Worker

GFS

Worker

Map

Re-duce

Re-duce

Page 12: 4 구글의 분산 데이터 처리

3 단계 처리

Map → Reduce → Shuffle

Map 새로운 키와 값을 출력 Worker 에서 중간 file 로 저장 Combiner : 중간 file 을 쓰기 전에 Reduce 한번 진행

Shuffle Map 의 출력을 정리하여 같은 키의 값을 모음 Map 과 병행해서 진행됨

Reduce 같은 키를 가진 모든 값이 모이면 Reduce 를 호출

Page 13: 4 구글의 분산 데이터 처리

분산 처리

입력 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 구글의 분산 데이터 처리

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 구글의 분산 데이터 처리

고속화

System 구성 수 백에서 수 천대의 machine

분산 Parameter M Parameter : 입력 파일을 분할하는 숫자 R Parameter : 중간 파일을 분할하는 숫자

Locality Split → Chunk Master 는 Chunk 의 처리를 가능한 Chunk 를 가지고

있는 Chunk Server 와 동일한 Machine 에 할당

Page 16: 4 구글의 분산 데이터 처리

고속화

Work Queue Locality 로 인해 Worker 각각의 작업량에 편차 발생 Cluster 내에 있는 모든 Machine 의 CPU 부하와

Disk 부하를 감시하고 있다가 부하가 적게 걸려 잇는 Machine 에게 Master 를 할당

Backup Master Backup Task Map 과 Reduce 가 얼마 남지 않았을 경우 동일한

처리를 복수의 Machine 에서 동시에 실행

Page 17: 4 구글의 분산 데이터 처리

실행 과정

① Map 처리가 시작

② Shuffle 이 시작

③ Shuffle 이 계속

④ Reduce 처리가 시작

⑤ Reduce 에 의한 출력

⑥ MapReduce 의 완료

M M

M

M

Page 18: 4 구글의 분산 데이터 처리

실행 과정

① Map 처리가 시작

② Shuffle 이 시작

③ Shuffle 이 계속

④ Reduce 처리가 시작

⑤ Reduce 에 의한 출력

⑥ MapReduce 의 완료

M M

M S

S M

Page 19: 4 구글의 분산 데이터 처리

실행 과정

① Map 처리가 시작

② Shuffle 이 시작

③ Shuffle 이 계속

④ Reduce 처리가 시작

⑤ Reduce 에 의한 출력

⑥ MapReduce 의 완료

M S

S S

S S

Page 20: 4 구글의 분산 데이터 처리

실행 과정

① Map 처리가 시작

② Shuffle 이 시작

③ Shuffle 이 계속

④ Reduce 처리가 시작

⑤ Reduce 에 의한 출력

⑥ MapReduce 의 완료

S S

S R

R S

Page 21: 4 구글의 분산 데이터 처리

실행 과정

① Map 처리가 시작

② Shuffle 이 시작

③ Shuffle 이 계속

④ Reduce 처리가 시작

⑤ Reduce 에 의한 출력

⑥ MapReduce 의 완료

R R

R R

R S

Page 22: 4 구글의 분산 데이터 처리

실행 과정

① Map 처리가 시작

② Shuffle 이 시작

③ Shuffle 이 계속

④ Reduce 처리가 시작

⑤ Reduce 에 의한 출력

⑥ MapReduce 의 완료

R

R

Page 23: 4 구글의 분산 데이터 처리

Sawzall분산처리용 Programing

언어

Sawzall?

Sawzall – 처리도

Specification

Command

Protocol Buffer

표준 Aggregator

실제 사용

실행 시간

Page 24: 4 구글의 분산 데이터 처리

Sawzall?

분산 처리를 위해 고안된 DSL DSL(Domain-Specific Language), 특정

도메인 언어 RDB 의 SQL 과 흡사 GFS 와 MapReduce 를 기반으로 하는

언어 Map → Filter Reduce → Aggregator

키와 값의 구별이 없음 Filter 에 의해 선택된 값이 Aggregator 로 정리

Page 25: 4 구글의 분산 데이터 처리

Sawzall – 처리도

Page 26: 4 구글의 분산 데이터 처리

Specification

정적인 유형의 절차형 Programming

기본적인 기능만 지원 → 객체지향 X

Interpreter → 사전 Compile 불필요

한 번 Sawzall 을 실행하면 몇천 대의 ma-chine 이 움직이기 때문에 사전 체크가 중요

Page 27: 4 구글의 분산 데이터 처리

Command

saw command 인수 - -program : Program 이 작성된 파일을 지정 인수 - -workqueue : program 실행할 work queue

cluster 이름 지정 인수 - -input_files : 입력 파일 지정 인수 - -destination : 출력 파일 지정

dump command 인수 - -source : saw command 에서 사용한 출력 파일

지정 인수 - -format : 출력 형식 지정

Page 28: 4 구글의 분산 데이터 처리

Protocol Buffer

Record 한 번에 읽어 들이는 data 의 단위

Protocol Buffer 쓰는 쪽과 읽는 쪽의 record 형식의 통일

Google 내부에서 읽기 / 쓰기가 가능한 data 는 Protocol Buffer 에 의해 통일됨

Process 간 데이터 교환

Page 29: 4 구글의 분산 데이터 처리

표준 Aggregator

Collection Emit 된 값을 모두 그대로 모음

Sample 일부 값만을 불규칙적으로 꺼냄 – data sampling

Sum Maximum

Weight Top

가장 많이 등장하는 값을 찾음 출현 횟수의 조사

기타 Agrregator Quantile Unique

Page 30: 4 구글의 분산 데이터 처리

실제 사용

평균값과 분산 입력 파일에서 다수의 수치 → 평균 , 분산

Page Rank Domain 별로 Page Rank 가 가장 높은 Web

Page

지역별 access 수 전 세계의 검색 요청 로그를 분석 , 이용자의 장소

별 검색 수 측정

Page 31: 4 구글의 분산 데이터 처리

실제 사용

Page 32: 4 구글의 분산 데이터 처리

실행 시간

Page 33: 4 구글의 분산 데이터 처리

Q & A

감사합니다