Diese Präsentation wurde erfolgreich gemeldet.
Wir verwenden Ihre LinkedIn Profilangaben und Informationen zu Ihren Aktivitäten, um Anzeigen zu personalisieren und Ihnen relevantere Inhalte anzuzeigen. Sie können Ihre Anzeigeneinstellungen jederzeit ändern.
D a v i d Chapter4 –  구글의 분산데이터처리
Content <ul><li>MapReduce </li></ul><ul><li>분산처리를 위한 기반 기술 </li></ul><ul><li>Sawzall </li></ul><ul><li>분산 처리용 프로그래밍 언어 </l...
MapReduce –  분산처리를 위한 기반 기술
MapReduce  란 ? <ul><li>Map </li></ul><ul><li>어떤 데이터의 집합을 받아들여 데이터를  </li></ul><ul><li>생성하는 프로세스 </li></ul><ul><li>Reduce <...
MapReduce  의 흐름 데이터 데이터 데이터 Map Map Map Reduce Reduce
MapReduce  의 흐름 <ul><li>MapReduce 의 흐름은 인덱스의 생성과정과 비슷함 </li></ul><ul><li>웹페이지를 가져와 단어 정보 등을 추출  Map </li></ul><ul><li>하나의 ...
Map 과  Reduce 의 역할 <ul><li>Map </li></ul><ul><li>Map 에는 키가 되는 데이터와 그에 대응하는 값  2 가지 존재 </li></ul><ul><li>Map  안에서는 주어진 키를 사...
Map 과  Reduce 의 역할 Map Map Reduce Reduce 키  1 값  1 키  2 값  2 키  A 값  X 키  B 값  Y 키  B 값  Z A = X B = Y, Z Map 은 새로운 키로 값을 ...
Map 과  Reduce 의 구체적 사례 벚꽃학교의 페이지 단풍학교의 페이지 docID = 1 docID = 2 역 인데스 302 단풍 301 벚꽃 203 페이지 201 의 101 학교 WordID 단어 0 2 302 ...
Shuffle  – Map 의 출력을 정리 하여 같은 키 값 모음 1:2 201 1:1 101 1:3 203 1:0 301 값 (docID) 키 (wordID) 2:0 302 2:1 101 2:3 203 2:2 201 ...
Reduce 를 이용한 처리 <ul><li>역 인덱스가 완성된 후 </li></ul><ul><li>검색에 사용가능하게 파일을 </li></ul><ul><li>기록하는 작업  (Reduce) </li></ul><ul><l...
프로그래밍 언어를 이용한 처리 Map(“1”, “ 벚꽃나무학교 페이지” ) -> [ (“301”, “1:0”), (“101”, “1:1”), (“201”, “1:2”), (“203”, “1:3”), Map(“2”, “ ...
MapReduce 로 할 수 있는 일 <ul><li>카운터 </li></ul><ul><li>입력파일 중 조건에 맞는 데이터의 수를 세는 일 </li></ul><ul><li>분산  grep </li></ul><ul><li...
MapReduce 로 할 수 있는 일 <ul><li>분산  sort </li></ul>12:01 uesr1 로그인 12:15 uesr2 로그인 12:15 uesr1 로그아웃 . . . 키  : user1 12:01 us...
워커에 의한 공동 작업 GFS GFS Map Map Reduce Reduce 마스터 # MapReduce  전체 모습 워커 워커 MapReduce 전체 동작을 관리 마스터의 요구에 따라 Map, Reduce  실행
3 단계 처리 과정  (Map) 입력 워커 분할 함수 중간 파일 키  1  값  1 키  2  값  2 … Map 키 A  값 키 B  값 키 C  값 … 키  A  값 키  B  값 키  C  값 키  D  값 . ....
3 단계 처리 과정  (Shuffle) 중간 파일 워커 셔  플 키  A  값 키  B  값 키  C  값 키  D  값 . . .  . . . . . . . . . . . . 키  B  값 키  A  값 . . . 키...
3 단계 처리 과정  (Shuffle) <ul><li>워커에서 중간파일이 생성이 되면 마스터를 경유해  Reduce 워커에  </li></ul><ul><li>위치 전달 </li></ul><ul><li>Reduce 워커는...
3 단계 처리 과정  (Reduce) 워커 . . . . . . . . . . . . 키  B  값 키  A  값 . . . 키  B  값 키  A  값 Reduce 출 력
3 단계 처리 과정  (Reduce) <ul><li>Reduce 는 셔플이 끝난 그룹부터 차례로 시작 </li></ul><ul><li>Reduce 에 건네진 키는 사전 순으로 작은 것부터 차례로 선택 </li></ul>...
고속화에 필요한 아이디어 <ul><li>1.  시스템 구성 </li></ul><ul><li>- MapReduce  한번 실행시 수백에서 수천대의 머신이 필요 </li></ul><ul><li>각 머신은 복수의  CPU 와...
고속화에 필요한 아이디어 <ul><li>2.  분산 파리미터 </li></ul><ul><li>- MapReduce  처리를 분할하는  M 과  R 2 개의 파라미터 </li></ul><ul><li>- M :  입력 파일...
고속화에 필요한 아이디어 <ul><li>3.  로컬리티 </li></ul><ul><li>-  좁은 공간에서 가능한 한 모든 것들을 처리해서 데이터  </li></ul><ul><li>전송의 부하를 피하는 것 </li></...
실행하는 과정에는 단계가 있다 <ul><li>Map  처리가 시작된다 . </li></ul><ul><li>셔플이 시작된다 . </li></ul><ul><li>셔플이 계속된다 . </li></ul><ul><li>Reduc...
MapReduce 의 장애 대책 <ul><li>마스터의 장애 대책 </li></ul><ul><li>마스터는 특별한 장애가 없음  /  고장시에  MapReduce  다시시작 </li></ul><ul><li>워커의 장애 ...
Sawzall –  분산처리용 프로그래밍 언어 G o o g l e
Sawzall <ul><li>Sawzall? </li></ul><ul><li>- 분산데이터 처리를 손쉽게 하기 위해 개발된 새로운 프로그래밍 언어 </li></ul><ul><li>- 데이터 통계와 로그 분석 등 자주 사...
Sawzall 의 흐름 데이터 데이터 데이터 필터 필터 필터 어그리게이터
T h a n k  y o u
Nächste SlideShare
Wird geladen in …5
×

구글의 분산데이터 처리

  • Loggen Sie sich ein, um Kommentare anzuzeigen.

  • Gehören Sie zu den Ersten, denen das gefällt!

구글의 분산데이터 처리

  1. 1. D a v i d Chapter4 – 구글의 분산데이터처리
  2. 2. Content <ul><li>MapReduce </li></ul><ul><li>분산처리를 위한 기반 기술 </li></ul><ul><li>Sawzall </li></ul><ul><li>분산 처리용 프로그래밍 언어 </li></ul>
  3. 3. MapReduce – 분산처리를 위한 기반 기술
  4. 4. MapReduce 란 ? <ul><li>Map </li></ul><ul><li>어떤 데이터의 집합을 받아들여 데이터를 </li></ul><ul><li>생성하는 프로세스 </li></ul><ul><li>Reduce </li></ul><ul><li>Map 에 의해서 만들어진 데이터를 모아서 최종적으로 </li></ul><ul><li>원하는 결과로 만들어 내는 프로세스 </li></ul>
  5. 5. MapReduce 의 흐름 데이터 데이터 데이터 Map Map Map Reduce Reduce
  6. 6. MapReduce 의 흐름 <ul><li>MapReduce 의 흐름은 인덱스의 생성과정과 비슷함 </li></ul><ul><li>웹페이지를 가져와 단어 정보 등을 추출 Map </li></ul><ul><li>하나의 인덱스로 모아서 완성 Reduce </li></ul><ul><li>웹페이지는 하나의 독립적으로 표현이 가능하기 때문에 </li></ul><ul><li>Map 과 Reduce 라는 프레임워크로 간결하게 </li></ul><ul><li>표현하는 것이 가능 </li></ul>
  7. 7. Map 과 Reduce 의 역할 <ul><li>Map </li></ul><ul><li>Map 에는 키가 되는 데이터와 그에 대응하는 값 2 가지 존재 </li></ul><ul><li>Map 안에서는 주어진 키를 사용하여 새로운 키와 값을 원하는 만큼 생성 </li></ul><ul><li>Map 에 의해서 만들어진 새로운 키 값은 자동적으로 정리 한곳으로 모임 </li></ul><ul><li>새로운 키와 모든 값들이 Reduce 로 전달 된다 . </li></ul><ul><li>Reduce </li></ul><ul><li>같은 wordID( 키’ ) 를 가진 모든 단어 정보 ( 값’ ) 를 사용하여 하나로 모으면 Reduce </li></ul><ul><li>모여진 wordID( 키’ ) 와 단어 정보 ( 값’ ) 를 사용하여 검색을 위한 역 인덱스 만듬 </li></ul><ul><li>개발자가 준비할 것은 Map 과 Reduce 라는 2 가지 처리 </li></ul><ul><li>Map 을 다수의 머신으로 분산하여 실행하는 것과 같은 키의 데이터를 모아 Reduce 를 호출하는 등 귀찮은 작업은 모두 시스템에 맡기는 것 </li></ul>
  8. 8. Map 과 Reduce 의 역할 Map Map Reduce Reduce 키 1 값 1 키 2 값 2 키 A 값 X 키 B 값 Y 키 B 값 Z A = X B = Y, Z Map 은 새로운 키로 값을 생성 / Reduce 는 같은 키의 값을 통합한다
  9. 9. Map 과 Reduce 의 구체적 사례 벚꽃학교의 페이지 단풍학교의 페이지 docID = 1 docID = 2 역 인데스 302 단풍 301 벚꽃 203 페이지 201 의 101 학교 WordID 단어 0 2 302 0 1 301 3 2 3 1 203 2 2 2 1 201 1 2 1 1 101 위치 docID WordID 단풍학교의 페이지 2 벚꽃학교의 페이지 1 값 ( 텍스트 ) 키 (docID)
  10. 10. Shuffle – Map 의 출력을 정리 하여 같은 키 값 모음 1:2 201 1:1 101 1:3 203 1:0 301 값 (docID) 키 (wordID) 2:0 302 2:1 101 2:3 203 2:2 201 값 (docID) 키 (wordID) 2:0 302 1:0 301 1:3 2:3 203 1:2 2:2 201 1:1 2:1 101 값 (docID: 위치 ) 의 리스트 키 (wordID)
  11. 11. Reduce 를 이용한 처리 <ul><li>역 인덱스가 완성된 후 </li></ul><ul><li>검색에 사용가능하게 파일을 </li></ul><ul><li>기록하는 작업 (Reduce) </li></ul><ul><li>각 셔플의 키에 따라 Reduce </li></ul><ul><li>호출 Reduce 데이터 파일에 </li></ul><ul><li>쓸 수 있도록 변환 출력 </li></ul><ul><li>MapReduce 이용하면 단순한 </li></ul><ul><li>프레임워크로 표현 </li></ul>302 = 2:0 301 = 1:0 203 = 1:3, 2:3 201 = 1:2, 2:2 101 = 1:1, 2:1 값 (wordID = docID : 위치 , …)
  12. 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 번째 맵 # 2 번째 맵 # 일련의 Reduce Reduce(“101”, [“1:1”, “2:1”]) -> “101 = 1:1, 2:1” Reduce(“201”, [“1:2”, “2:2”]) -> “201 = 1:2, 2:2” ………………… ..
  13. 13. MapReduce 로 할 수 있는 일 <ul><li>카운터 </li></ul><ul><li>입력파일 중 조건에 맞는 데이터의 수를 세는 일 </li></ul><ul><li>분산 grep </li></ul><ul><li>파일에서 특정 문자열을 포함하는 행을 찾는 프로그램 </li></ul><ul><li>분산 sort </li></ul><ul><li>입력 데이터를 임의의 순서로 정렬하는 것도 가능 </li></ul>
  14. 14. MapReduce 로 할 수 있는 일 <ul><li>분산 sort </li></ul>12:01 uesr1 로그인 12:15 uesr2 로그인 12:15 uesr1 로그아웃 . . . 키 : user1 12:01 user1 로그인 12:15 uesr1 로그아웃 키 : user2 12:05 user2 로그인 . . .
  15. 15. 워커에 의한 공동 작업 GFS GFS Map Map Reduce Reduce 마스터 # MapReduce 전체 모습 워커 워커 MapReduce 전체 동작을 관리 마스터의 요구에 따라 Map, Reduce 실행
  16. 16. 3 단계 처리 과정 (Map) 입력 워커 분할 함수 중간 파일 키 1 값 1 키 2 값 2 … Map 키 A 값 키 B 값 키 C 값 … 키 A 값 키 B 값 키 C 값 키 D 값 . . . <ul><li>마스터는 입력 파일을 복수의 </li></ul><ul><li>단편으로 분할 </li></ul><ul><li>하나하나의 처리를 순차적을 </li></ul><ul><li>워커에 할당 </li></ul><ul><li>워커는 단편에 기록된 키와 </li></ul><ul><li>값을 Map 호출 </li></ul><ul><li>Map 은 새로운 키와 값을 출력 </li></ul><ul><li>워커는 잠시 메모리상 </li></ul><ul><li>중간파일로 저장 </li></ul><ul><li>중간파일은 일시적으로만 사용 </li></ul><ul><li>효율을 높이기 위해 GFS 가 </li></ul><ul><li>아닌 로컬파일 저장 </li></ul>
  17. 17. 3 단계 처리 과정 (Shuffle) 중간 파일 워커 셔 플 키 A 값 키 B 값 키 C 값 키 D 값 . . . . . . . . . . . . . . . 키 B 값 키 A 값 . . . 키 B 값 키 A 값
  18. 18. 3 단계 처리 과정 (Shuffle) <ul><li>워커에서 중간파일이 생성이 되면 마스터를 경유해 Reduce 워커에 </li></ul><ul><li>위치 전달 </li></ul><ul><li>Reduce 워커는 네트워크를 경유해 중간파일을 가져오고 바로 셔플 시작 </li></ul><ul><li>중간파일에 기록된 키에 따라 모든 데이터가 정렬 </li></ul><ul><li>중간파일이 작으면 메모리상에서 정렬 , 크면 임시파일로 보냄 </li></ul><ul><li>중간 파일이 모일 때까지 셔플이 완료 되지 않기 때문에 Map 이 </li></ul><ul><li>계속 되는 한 셔플도 끝나지 않는다 . </li></ul><ul><li>Map 쪽에서 중간파일이 생성될 때마다 순차적으로 셔플이 이루어지고 </li></ul><ul><li>모든 Map 의 처리가 완료가 되면 셔플도 끝남 </li></ul>
  19. 19. 3 단계 처리 과정 (Reduce) 워커 . . . . . . . . . . . . 키 B 값 키 A 값 . . . 키 B 값 키 A 값 Reduce 출 력
  20. 20. 3 단계 처리 과정 (Reduce) <ul><li>Reduce 는 셔플이 끝난 그룹부터 차례로 시작 </li></ul><ul><li>Reduce 에 건네진 키는 사전 순으로 작은 것부터 차례로 선택 </li></ul><ul><li>중간파일에 기록된 키에 따라 모든 데이터가 정렬 </li></ul><ul><li>Reduce 의 출력은 그룹별로 하나의 파일로서 GFS 로 보내짐 </li></ul><ul><li>그룹의 수만큼 출력 파일이 만들어짐 </li></ul>
  21. 21. 고속화에 필요한 아이디어 <ul><li>1. 시스템 구성 </li></ul><ul><li>- MapReduce 한번 실행시 수백에서 수천대의 머신이 필요 </li></ul><ul><li>각 머신은 복수의 CPU 와 2~4GB 메모리 장착 </li></ul><ul><li>100Mbps 혹은 1Gbps 의 LAN 으로 연결 </li></ul><ul><li>- 각 머신은 GFS 클러스터 및 Work Queue 클러스터 구성 </li></ul><ul><li>MapReduce 가 읽고 쓰는 데이터는 GFS 에 의해 관리 </li></ul><ul><li>워커가 실행하는 마스터는 Work Queue 에 의해 관리 </li></ul>
  22. 22. 고속화에 필요한 아이디어 <ul><li>2. 분산 파리미터 </li></ul><ul><li>- MapReduce 처리를 분할하는 M 과 R 2 개의 파라미터 </li></ul><ul><li>- M : 입력 파일의 분할 숫자로 입력 파일의 크기에 따라 정해짐 </li></ul><ul><li>M 이 작으면 Map 처리가 제대로 분산되지 않기 때문에 머신의 </li></ul><ul><li>수를 높여도 성능이 발휘 안됨 </li></ul><ul><li>- R : 중간파일을 분할하는 숫자로 개발자가 지정 </li></ul><ul><li>R 이 클수록 하나하나의 중간파일은 작아지고 , </li></ul><ul><li>셔플과 Reduce 처리도 넓게 분산 </li></ul>
  23. 23. 고속화에 필요한 아이디어 <ul><li>3. 로컬리티 </li></ul><ul><li>- 좁은 공간에서 가능한 한 모든 것들을 처리해서 데이터 </li></ul><ul><li>전송의 부하를 피하는 것 </li></ul><ul><li>4. 백업 마스터 </li></ul><ul><li>- 다수의 머신으로 분산처리할 때는 장애가 발생하기 쉬움 </li></ul><ul><li>- Map 과 Reduce 가 종료될 즈음에는 백업 테스크를 가동시켜 </li></ul><ul><li>제일 먼저 끝난 결과를 채용 , 결과적으로 처리시간을 단축 </li></ul>
  24. 24. 실행하는 과정에는 단계가 있다 <ul><li>Map 처리가 시작된다 . </li></ul><ul><li>셔플이 시작된다 . </li></ul><ul><li>셔플이 계속된다 . </li></ul><ul><li>Reduce 처리가 시작된다 . </li></ul><ul><li>Reduce 에 의한 출력 </li></ul><ul><li>MapReduce 의 완료 </li></ul>MapReduce 의 과정 정리
  25. 25. MapReduce 의 장애 대책 <ul><li>마스터의 장애 대책 </li></ul><ul><li>마스터는 특별한 장애가 없음 / 고장시에 MapReduce 다시시작 </li></ul><ul><li>워커의 장애 대책 </li></ul><ul><li>워커의 수가 많은 만큼 고장 확률이 높음 </li></ul><ul><li>마스터의 수시 검사 / 고장시 관리 대상 제외 </li></ul><ul><li>장애 발생 워커의 수행 Map 은 다른 워커에 의해 처음 부터 시작 </li></ul><ul><li>Map 과 Reduce 장애 대책 </li></ul><ul><li>문제가 명확하면 수정하지만 그렇지 않으면 무시하고 넘어감 </li></ul>
  26. 26. Sawzall – 분산처리용 프로그래밍 언어 G o o g l e
  27. 27. Sawzall <ul><li>Sawzall? </li></ul><ul><li>- 분산데이터 처리를 손쉽게 하기 위해 개발된 새로운 프로그래밍 언어 </li></ul><ul><li>- 데이터 통계와 로그 분석 등 자주 사용하는 업무를 간단하게 처리 </li></ul><ul><li>-Sawzall 은 GFS 와 MapReduce 기반의 언어 </li></ul><ul><li>-MapReduce 와 유사한 동작 방식 </li></ul><ul><li>-Map -> Filter </li></ul><ul><li>-Reduce -> Aggregator </li></ul><ul><li>-Filter 와 Aggregator 는 키값의 구별이 없음 </li></ul><ul><li>-Filter 에 의해 선택된 값이 Aggregator 로 정리 </li></ul><ul><li>-Filter 를 자유롭기 기술 , Aggregator 는 기존의 것 사용 </li></ul><ul><li>-Fliter 를 기술하는 것만으로 분산처리를 시행 </li></ul>
  28. 28. Sawzall 의 흐름 데이터 데이터 데이터 필터 필터 필터 어그리게이터
  29. 29. T h a n k y o u

×