Upload
juhyun
View
2.501
Download
3
Embed Size (px)
Citation preview
DDaavviidd
Chapter4 – Chapter4 – 구글의 분산데이터처리구글의 분산데이터처리
ContentContent
MapReduce 분산처리를 위한 기반 기술
Sawzall 분산 처리용 프로그래밍 언어
MapReduce – MapReduce – 분산처리를 위한 기반 기술분산처리를 위한 기반 기술
MapReduce 란 ?
Map 어떤 데이터의 집합을 받아들여 데이터를 생성하는 프로세스
Reduce Map 에 의해서 만들어진 데이터를 모아서 최종적으로 원하는 결과로 만들어 내는 프로세스
MapReduce 의 흐름
데이터데이터
데이터데이터
데이터데이터
MapMap
MapMap
MapMap
ReduceReduce
ReduceReduce
MapReduce 의 흐름
MapReduce 의 흐름은 인덱스의 생성과정과 비슷함
웹페이지를 가져와 단어 정보 등을 추출 Map
하나의 인덱스로 모아서 완성 Reduce
웹페이지는 하나의 독립적으로 표현이 가능하기 때문에 Map 과 Reduce 라는 프레임워크로 간결하게 표현하는 것이 가능
Map 과 Reduce 의 역할 Map Map 에는 키가 되는 데이터와 그에 대응하는 값 2 가지 존재 Map 안에서는 주어진 키를 사용하여 새로운 키와 값을 원하는 만큼 생성 Map 에 의해서 만들어진 새로운 키 값은 자동적으로 정리 한곳으로 모임 새로운 키와 모든 값들이 Reduce 로 전달 된다 .
Reduce 같은 wordID( 키’ ) 를 가진 모든 단어 정보 ( 값’ ) 를 사용하여 하나로 모으면 Redu
ce 모여진 wordID( 키’ ) 와 단어 정보 ( 값’ ) 를 사용하여 검색을 위한 역 인덱스 만듬
개발자가 준비할 것은 Map 과 Reduce 라는 2 가지 처리 Map 을 다수의 머신으로 분산하여 실행하는 것과 같은 키의 데이터를 모아 Redu
ce 를 호출하는 등 귀찮은 작업은 모두 시스템에 맡기는 것
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 는 같은 키의 값을 통합한다는 같은 키의 값을 통합한다
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 단풍학교의 페이지
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
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 이용하면 단순한 프레임워크로 표현
프로그래밍 언어를 이용한 처리
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”……………………………………....
MapReduce 로 할 수 있는 일
카운터 입력파일 중 조건에 맞는 데이터의 수를 세는 일
분산 grep 파일에서 특정 문자열을 포함하는 행을 찾는 프로그램
분산 sort 입력 데이터를 임의의 순서로 정렬하는 것도 가능
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 로그인로그인. . .. . .
워커에 의한 공동 작업
GFSGFS GFSGFS
MapMap
MapMap ReduceReduce
ReduceReduce
마스터마스터# MapReduce # MapReduce 전체 모습전체 모습
워커워커 워커워커
MapReduceMapReduce전체 동작을 관리전체 동작을 관리
마스터의 요구에 따라마스터의 요구에 따라Map, Reduce Map, Reduce 실행실행
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 가 아닌 로컬파일 저장
3 단계 처리 과정 (Shuffle)
워커워커
셔 플셔 플
키 키 A A 값값
키 키 B B 값값
키 키 C C 값값
키 키 D D 값값. . . . . .
. . ....
.
.
.
. . .키 B 값키 A 값
. . .키 B 값키 A 값
중간 파일중간 파일
3 단계 처리 과정 (Shuffle)
•워커에서 중간파일이 생성이 되면 마스터를 경유해 Reduce 워커에 위치 전달
•Reduce 워커는 네트워크를 경유해 중간파일을 가져오고 바로 셔플 시작
•중간파일에 기록된 키에 따라 모든 데이터가 정렬
•중간파일이 작으면 메모리상에서 정렬 , 크면 임시파일로 보냄
•중간 파일이 모일 때까지 셔플이 완료 되지 않기 때문에 Map 이 계속 되는 한 셔플도 끝나지 않는다 .
•Map 쪽에서 중간파일이 생성될 때마다 순차적으로 셔플이 이루어지고 모든 Map 의 처리가 완료가 되면 셔플도 끝남
3 단계 처리 과정 (Reduce)
워커워커
. . ....
.
.
.
. . .키 B 값키 A 값
. . .키 B 값키 A 값
ReduceReduce
출 력출 력
3 단계 처리 과정 (Reduce)
•Reduce 는 셔플이 끝난 그룹부터 차례로 시작
•Reduce 에 건네진 키는 사전 순으로 작은 것부터 차례로 선택
•중간파일에 기록된 키에 따라 모든 데이터가 정렬
•Reduce 의 출력은 그룹별로 하나의 파일로서 GFS 로 보내짐
•그룹의 수만큼 출력 파일이 만들어짐
고속화에 필요한 아이디어
1. 시스템 구성 - MapReduce 한번 실행시 수백에서 수천대의 머신이 필요 각 머신은 복수의 CPU 와 2~4GB 메모리 장착 100Mbps 혹은 1Gbps 의 LAN으로 연결
- 각 머신은 GFS클러스터 및 Work Queue 클러스터 구성 MapReduce 가 읽고 쓰는 데이터는 GFS 에 의해 관리 워커가 실행하는 마스터는 Work Queue 에 의해 관리
고속화에 필요한 아이디어
2. 분산 파리미터 - MapReduce 처리를 분할하는 M 과 R 2 개의 파라미터
- M : 입력 파일의 분할 숫자로 입력 파일의 크기에 따라 정해짐 M 이 작으면 Map 처리가 제대로 분산되지 않기 때문에 머신의 수를 높여도 성능이 발휘 안됨
- R : 중간파일을 분할하는 숫자로 개발자가 지정 R 이 클수록 하나하나의 중간파일은 작아지고 , 셔플과 Reduce 처리도 넓게 분산
고속화에 필요한 아이디어
3. 로컬리티 - 좁은 공간에서 가능한 한 모든 것들을 처리해서 데이터 전송의 부하를 피하는 것
4. 백업 마스터 - 다수의 머신으로 분산처리할 때는 장애가 발생하기 쉬움 - Map 과 Reduce 가 종료될 즈음에는 백업 테스크를 가동시켜 제일 먼저 끝난 결과를 채용 , 결과적으로 처리시간을 단축
실행하는 과정에는 단계가 있다
1. Map 처리가 시작된다 .2. 셔플이 시작된다 .3. 셔플이 계속된다 .4. Reduce 처리가 시작된다 .5. Reduce 에 의한 출력6. MapReduce 의 완료
MapReduceMapReduce 의 과정 정리의 과정 정리
MapReduce 의 장애 대책 마스터의 장애 대책 마스터는 특별한 장애가 없음 / 고장시에 MapReduce 다시시작
워커의 장애 대책 워커의 수가 많은 만큼 고장 확률이 높음 마스터의 수시 검사 / 고장시 관리 대상 제외 장애 발생 워커의 수행 Map 은 다른 워커에 의해 처음 부터 시작
Map 과 Reduce 장애 대책 문제가 명확하면 수정하지만 그렇지 않으면 무시하고 넘어감
Sawzall – Sawzall – 분산처리용 프로그래밍 언어분산처리용 프로그래밍 언어
Sawzall Sawzall? - 분산데이터 처리를 손쉽게 하기 위해 개발된 새로운 프로그래밍 언어 - 데이터 통계와 로그 분석 등 자주 사용하는 업무를 간단하게 처리 -Sawzall 은 GFS 와 MapReduce 기반의 언어 -MapReduce 와 유사한 동작 방식 -Map -> Filter -Reduce -> Aggregator -Filter 와 Aggregator 는 키값의 구별이 없음 -Filter 에 의해 선택된 값이 Aggregator 로 정리 -Filter 를 자유롭기 기술 , Aggregator 는 기존의 것 사용 -Fliter 를 기술하는 것만으로 분산처리를 시행
Sawzall 의 흐름
데이터데이터
데이터데이터
데이터데이터
필터필터
필터필터
필터필터
어그리게이터어그리게이터
TThhaannk k yyoouu