관리 메뉴

Hee'World

[1004jonghee]MapReduce란? 본문

BigData/MapReduce

[1004jonghee]MapReduce란?

Jonghee Jeon 2013. 7. 30. 16:10

MapReduce구글에서 분산 컴퓨팅을 지원하기 위한 목적으로 제작하여 2004년 발표한 소프트웨어 프레임워크다. 이 프레임워크는 페타바이트 이상의 대용량 데이터를 신뢰할 수 없는 컴퓨터로 구성된 클러스터 환경에서 병렬 처리를 지원하기 위해서 개발되었다. 이 프레임워크는 함수형 프로그래밍에서 일반적으로 사용되는 MapReduce라는 함수 기반으로 주로 구성된다.

현재 MapReduce는 JavaC++, 그리고 기타 언어에서 적용이 가능하도록 작성되었다.

                                - 위키백과 -

 

 

 

 

MapReduce Job(맵리듀스는 잡job 이라는 단위로 관리된다.)
- 태스크의 일
데이터를 적재, 구문분석, 변환, 필터링
- 리듀스 태스크의 일
태스크 출력의 일부분을 처리,
데이터를 분류하고 취합하기 위해 매퍼 태스크로부터 중간 데이터를 복사

 

 

태스크의 작업 순서

      -  레코드 리더,매퍼,콤바이너,파티셔너, 중간키/값 출력 ->리듀서

리듀스 태스크의 작업 순서
                -  셔플, 정렬, 리듀서, 출력포맷

 

 

 

        - 맵 태스크 작업 내용 -

 

레코드리더 -> 입력 포맷에 의해 생성된 입력 스플릿을/값 쌍의 형태로 매퍼에게 데이터를 전달, 데이터를 레코드로 파싱하는,
-> 레코드 리더가 전달한 각 키/값 쌍을 처리하여, 0개 이상의 신규/키값을 만든다. 여기서 키와 값을 무엇으로 결정하는지가 맵리듀스 잡의 결과에 매우 중요한 영향을 끼침.
콤바이너 -> 단계에서 데이터를 분류할 수 있으며, 중간 키를 가지고 한 매퍼의 값을 모으는 메소드에 적용. 맵태스크과 리듀스태스크 사이의 전송되어야 할 데이터크기를 줄여 잡의 성능을 높일 수 있음. 하지만 콤바이너를 사용할 수 없는 패턴이 존재하며, 상시 적용 보장 할 수 없기 때문에 전체 알고리즘의 한 부분은 아니다.
파티셔너 -> 매퍼(또는 사용중인 콤바이너)로부터 받은 중간 키/쌍으 ㄹ리듀서에 배분한다.

 

 

- 리듀스 태스크 작업 내용 -

 
셔플과 정렬 -> 리듀스태스크는 셔플과 정렬 단계로 시작한다. 이 단계에서는 모든 파티셔너에 의해 생성된 출력 파일을 리듀서가 작동 중인 서버로 내려받는다. 내려 받은 개별 데이터 조각들은 하나의 더 큰 데이터 목록으로 키에 의해 정렬된다. 이 정렬의 목적은 같은 키로 분류하여 리듀스 태스크에서 값을 쉽게 반복 처리하기 위함이다. 이 단계는 사용자가 바꿀수 없으며 프레임워크가 자동으로 모든 것을 진행한다.
리듀스 -> 분류된 데이터를 입력으로 취하고 키 그룹마다 한번씩 리듀스 함수를 실행한다. 함수는 키와 해당 키에 관련된 반복된 모든 값을 넘겨 받는다. 데이터 처리의 많은 부분이 이 함수에서 이루어지며, 패턴의 많은 부분을 볼 수 있다. 여러 가지 방법으로 데이터를 모으고 필터링하고 결합할 수 있다.
출력 포맷 -> 리듀스 함수의 최종 키/값 쌍을 변환하고, 레코드 라이터에의해 파일로 출력한다. 출력 데이터 포맷은 OutputFormat 이라는 추상화 클래스를 상속받아 구현된며, 여러 API를 사용 할 수 있다.

 

 

    - 출처 "맵리듀스 디자인 패턴" -

'BigData > MapReduce' 카테고리의 다른 글

Mapper 클래스 메소드  (0) 2013.09.09
MapRedcue 컴바이너(Combiner)  (0) 2013.09.05
[1004jonghee]FileInputFormat 종류  (0) 2013.08.19
[1004jonghee]맵리듀스 레코드리더(RecordReader)  (0) 2013.08.13
Comments