29
D D a a v v i i d d Chapter4 – Chapter4 – 구구구 구구구구구구구 구구구 구구구구구구구

구글의 분산데이터 처리

  • Upload
    juhyun

  • View
    2.501

  • Download
    3

Embed Size (px)

Citation preview

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

DDaavviidd

Chapter4 – Chapter4 – 구글의 분산데이터처리구글의 분산데이터처리

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

ContentContent

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

Sawzall 분산 처리용 프로그래밍 언어

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

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

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

MapReduce 란 ?

Map 어떤 데이터의 집합을 받아들여 데이터를 생성하는 프로세스

Reduce Map 에 의해서 만들어진 데이터를 모아서 최종적으로 원하는 결과로 만들어 내는 프로세스

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

MapReduce 의 흐름

데이터데이터

데이터데이터

데이터데이터

MapMap

MapMap

MapMap

ReduceReduce

ReduceReduce

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

MapReduce 의 흐름

MapReduce 의 흐름은 인덱스의 생성과정과 비슷함

웹페이지를 가져와 단어 정보 등을 추출 Map

하나의 인덱스로 모아서 완성 Reduce

웹페이지는 하나의 독립적으로 표현이 가능하기 때문에 Map 과 Reduce 라는 프레임워크로 간결하게 표현하는 것이 가능

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

Map 과 Reduce 의 역할 Map Map 에는 키가 되는 데이터와 그에 대응하는 값 2 가지 존재 Map 안에서는 주어진 키를 사용하여 새로운 키와 값을 원하는 만큼 생성 Map 에 의해서 만들어진 새로운 키 값은 자동적으로 정리 한곳으로 모임 새로운 키와 모든 값들이 Reduce 로 전달 된다 .

Reduce 같은 wordID( 키’ ) 를 가진 모든 단어 정보 ( 값’ ) 를 사용하여 하나로 모으면 Redu

ce 모여진 wordID( 키’ ) 와 단어 정보 ( 값’ ) 를 사용하여 검색을 위한 역 인덱스 만듬

개발자가 준비할 것은 Map 과 Reduce 라는 2 가지 처리 Map 을 다수의 머신으로 분산하여 실행하는 것과 같은 키의 데이터를 모아 Redu

ce 를 호출하는 등 귀찮은 작업은 모두 시스템에 맡기는 것

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

Map 과 Reduce 의 역할

MapMap

MapMap

ReduceReduce

ReduceReduce

키 키 11값 값 11

키 키 22값 값 22

키 키 AA값 값 XX

키 키 BB값 값 YY

키 키 BB값 값 ZZ

A = XA = X

B = Y, ZB = Y, Z

MapMap 은 새로운 키로 값을 생성 은 새로운 키로 값을 생성 / Reduce/ Reduce 는 같은 키의 값을 통합한다는 같은 키의 값을 통합한다

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

Map 과 Reduce 의 구체적 사례

단어 WordID

학교 101

의 201

페이지 203

벚꽃 301

단풍 302

벚꽃학교의 페이지벚꽃학교의 페이지

단풍학교의 페이지단풍학교의 페이지

docID = 1docID = 1

docID = 2docID = 2

WordID docID 위치

101 1 1

2 1

201 1 2

2 2

203 1 3

2 3

301 1 0

302 2 0

역 인데스역 인데스

키 (docID) 값 ( 텍스트 )

1 벚꽃학교의 페이지

2 단풍학교의 페이지

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

Shuffle – Map 의 출력을 정리 하여 같은 키 값 모음

키 (wordID) 값 (docID)

301 1:0

101 1:1

201 1:2

203 1:3

키 (wordID) 값 (docID)

302 2:0

101 2:1

201 2:2

203 2:3

키 (wordID) 값 (docID: 위치 ) 의 리스트

101 1:1 2:1

201 1:2 2:2

203 1:3 2:3

301 1:0

302 2:0

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

Reduce 를 이용한 처리

값 (wordID = docID : 위치 , …)

101 = 1:1, 2:1

201 = 1:2, 2:2

203 = 1:3, 2:3

301 = 1:0

302 = 2:0

•역 인덱스가 완성된 후 검색에 사용가능하게 파일을 기록하는 작업 (Reduce)

•각 셔플의 키에 따라 Reduce 호출 Reduce 데이터 파일에 쓸 수 있도록 변환 출력

•MapReduce 이용하면 단순한 프레임워크로 표현

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

프로그래밍 언어를 이용한 처리

Map(“1”, “ 벚꽃나무학교 페이지” ) -> [ (“301”, “1:0”), (“101”, “1:1”), (“201”, “1:2”), (“203”, “1:3”),

Map(“2”, “ 단풍나무학교 페이지” ) -> [ (“302”, “2:0”), (“101”, “2:1”), (“201”, “2:2”), (“203”, “2:3”),

# 1# 1 번째 맵번째 맵

# 2# 2 번째 맵번째 맵

# # 일련의 일련의 ReduceReduce

Reduce(“101”, [“1:1”, “2:1”]) -> “101 = 1:1, 2:1”Reduce(“101”, [“1:1”, “2:1”]) -> “101 = 1:1, 2:1”

Reduce(“201”, [“1:2”, “2:2”]) -> “201 = 1:2, 2:2”Reduce(“201”, [“1:2”, “2:2”]) -> “201 = 1:2, 2:2”……………………………………....

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

MapReduce 로 할 수 있는 일

카운터 입력파일 중 조건에 맞는 데이터의 수를 세는 일

분산 grep 파일에서 특정 문자열을 포함하는 행을 찾는 프로그램

분산 sort 입력 데이터를 임의의 순서로 정렬하는 것도 가능

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

MapReduce 로 할 수 있는 일

분산 sort

12:01 uesr112:01 uesr1 로그인로그인12:15 uesr212:15 uesr2 로그인로그인12:15 uesr112:15 uesr1 로그아웃로그아웃. . .. . .

키 키 : user1: user1

12:01 user112:01 user1 로그인로그인12:15 uesr112:15 uesr1 로그아웃로그아웃

키 키 : user2: user2

12:05 user212:05 user2 로그인로그인. . .. . .

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

워커에 의한 공동 작업

GFSGFS GFSGFS

MapMap

MapMap ReduceReduce

ReduceReduce

마스터마스터# MapReduce # MapReduce 전체 모습전체 모습

워커워커 워커워커

MapReduceMapReduce전체 동작을 관리전체 동작을 관리

마스터의 요구에 따라마스터의 요구에 따라Map, Reduce Map, Reduce 실행실행

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

3 단계 처리 과정 (Map)

입력입력

워커워커

분할 함수분할 함수

중간 파일중간 파일

키 키 1 1 값 값 11 키 키 2 2 값 값 22 ……

MapMap

키키 A A 값값 키키 B B 값값 키키 C C 값값 ……

키 키 A A 값값

키 키 B B 값값

키 키 C C 값값

키 키 D D 값값

. . . . . .

•마스터는 입력 파일을 복수의 단편으로 분할

•하나하나의 처리를 순차적을 워커에 할당

•워커는 단편에 기록된 키와 값을 Map 호출

•Map 은 새로운 키와 값을 출력

•워커는 잠시 메모리상 중간파일로 저장

•중간파일은 일시적으로만 사용 효율을 높이기 위해 GFS 가 아닌 로컬파일 저장

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

3 단계 처리 과정 (Shuffle)

워커워커

셔 플셔 플

키 키 A A 값값

키 키 B B 값값

키 키 C C 값값

키 키 D D 값값. . . . . .

. . ....

.

.

.

. . .키 B 값키 A 값

. . .키 B 값키 A 값

중간 파일중간 파일

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

3 단계 처리 과정 (Shuffle)

•워커에서 중간파일이 생성이 되면 마스터를 경유해 Reduce 워커에 위치 전달

•Reduce 워커는 네트워크를 경유해 중간파일을 가져오고 바로 셔플 시작

•중간파일에 기록된 키에 따라 모든 데이터가 정렬

•중간파일이 작으면 메모리상에서 정렬 , 크면 임시파일로 보냄

•중간 파일이 모일 때까지 셔플이 완료 되지 않기 때문에 Map 이 계속 되는 한 셔플도 끝나지 않는다 .

•Map 쪽에서 중간파일이 생성될 때마다 순차적으로 셔플이 이루어지고 모든 Map 의 처리가 완료가 되면 셔플도 끝남

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

3 단계 처리 과정 (Reduce)

워커워커

. . ....

.

.

.

. . .키 B 값키 A 값

. . .키 B 값키 A 값

ReduceReduce

출 력출 력

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

3 단계 처리 과정 (Reduce)

•Reduce 는 셔플이 끝난 그룹부터 차례로 시작

•Reduce 에 건네진 키는 사전 순으로 작은 것부터 차례로 선택

•중간파일에 기록된 키에 따라 모든 데이터가 정렬

•Reduce 의 출력은 그룹별로 하나의 파일로서 GFS 로 보내짐

•그룹의 수만큼 출력 파일이 만들어짐

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

고속화에 필요한 아이디어

1. 시스템 구성 - MapReduce 한번 실행시 수백에서 수천대의 머신이 필요 각 머신은 복수의 CPU 와 2~4GB 메모리 장착 100Mbps 혹은 1Gbps 의 LAN으로 연결

- 각 머신은 GFS클러스터 및 Work Queue 클러스터 구성 MapReduce 가 읽고 쓰는 데이터는 GFS 에 의해 관리 워커가 실행하는 마스터는 Work Queue 에 의해 관리

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

고속화에 필요한 아이디어

2. 분산 파리미터 - MapReduce 처리를 분할하는 M 과 R 2 개의 파라미터

- M : 입력 파일의 분할 숫자로 입력 파일의 크기에 따라 정해짐 M 이 작으면 Map 처리가 제대로 분산되지 않기 때문에 머신의 수를 높여도 성능이 발휘 안됨

- R : 중간파일을 분할하는 숫자로 개발자가 지정 R 이 클수록 하나하나의 중간파일은 작아지고 , 셔플과 Reduce 처리도 넓게 분산

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

고속화에 필요한 아이디어

3. 로컬리티 - 좁은 공간에서 가능한 한 모든 것들을 처리해서 데이터 전송의 부하를 피하는 것

4. 백업 마스터 - 다수의 머신으로 분산처리할 때는 장애가 발생하기 쉬움 - Map 과 Reduce 가 종료될 즈음에는 백업 테스크를 가동시켜 제일 먼저 끝난 결과를 채용 , 결과적으로 처리시간을 단축

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

실행하는 과정에는 단계가 있다

1. Map 처리가 시작된다 .2. 셔플이 시작된다 .3. 셔플이 계속된다 .4. Reduce 처리가 시작된다 .5. Reduce 에 의한 출력6. MapReduce 의 완료

MapReduceMapReduce 의 과정 정리의 과정 정리

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

MapReduce 의 장애 대책 마스터의 장애 대책 마스터는 특별한 장애가 없음 / 고장시에 MapReduce 다시시작

워커의 장애 대책 워커의 수가 많은 만큼 고장 확률이 높음 마스터의 수시 검사 / 고장시 관리 대상 제외 장애 발생 워커의 수행 Map 은 다른 워커에 의해 처음 부터 시작

Map 과 Reduce 장애 대책 문제가 명확하면 수정하지만 그렇지 않으면 무시하고 넘어감

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

Sawzall – Sawzall – 분산처리용 프로그래밍 언어분산처리용 프로그래밍 언어

Google

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

Sawzall Sawzall? - 분산데이터 처리를 손쉽게 하기 위해 개발된 새로운 프로그래밍 언어 - 데이터 통계와 로그 분석 등 자주 사용하는 업무를 간단하게 처리 -Sawzall 은 GFS 와 MapReduce 기반의 언어 -MapReduce 와 유사한 동작 방식 -Map -> Filter -Reduce -> Aggregator -Filter 와 Aggregator 는 키값의 구별이 없음 -Filter 에 의해 선택된 값이 Aggregator 로 정리 -Filter 를 자유롭기 기술 , Aggregator 는 기존의 것 사용 -Fliter 를 기술하는 것만으로 분산처리를 시행

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

Sawzall 의 흐름

데이터데이터

데이터데이터

데이터데이터

필터필터

필터필터

필터필터

어그리게이터어그리게이터

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

TThhaannk k yyoouu