맵리듀스(MapReduce)?

대용량 데이터를 처리를 위한 분산 프로그래밍 모델


-  글에서 2004년 발표한 소프트웨어 프레임워크


타고난 병행성(병렬 처리 지원)을 내포


누구든지 임의로 활용할 수 있는 충분한 서버를 이용하여 대규모 데이터 분석 가능


흩어져 있는 데이터를 수직화하여그 데이터를 각각의 종류 별로 모으고(Map),

  Filtering Sorting을 거쳐 데이터를 뽑아내는(Reduce) 하는 분산처리 기술과 관련 프레임워크를 의미

mapreduce 여러노드에 task를 분배하는 방법

hadoop클러스터의 데이터를 처리하기 위한 시스템

Map단계, reduce단계 = fork-join이랑 비슷하다.

map: block마다 같은 작업 수행, reduce: 합치기

 


맵리듀스는 맵(Map) 단계와 리듀스(Reduce) 단계로 처리 과정을 나누어 작업

각 단계는 입력과 출력으로써 - 쌍을 가지고 있고그 타입은 프로그래머가 선택합니다또한맵과 리듀스 함수도 프로그래머가 직접 


작성하게 됩니다


Map은 흩어져 있는 데이터를 Key, Value의 형태로 연관성 있는 데이터 분류로 묶는 작업

Reduce Map화한 작업 중 중복 데이터를 제거하고 원하는 데이터를 추출하는 작업


MapReduce Logical Data Flow




(map)은 흩어져 있는 데이터를 관련 있는 데이터끼리 묶는 작업을 통해서 임시 데이터 집합으로 변형되며,

리듀스(Reduce)는 맵 작업에서 생성된 임시 데이터 집합에서 중복 데이터를 제거하고 원하는 데이터를 추출하는 작업을 진행합니다.

 

 

맵리듀스 잡(MapReduce Job): Client 수행 작업 단위

클라이언트가 수행하려는 작업 단위로써 입력 데이터맵리듀스 프로그램설정 정보로 구성


하둡은 Job Map Task Reduce Task로 작업을 나누어서 실행한다.


- Job 실행 과정을 “제어해주는 노드


 

잡 트래커(Job Tracker): 태스크 트래커가 수행할 Task 스케줄링시스템 전체 수행을 조절.

 태스크 트래커(Task Tracker): Task 수행하고잡트래커에게 전체 경과 보고.



맵리듀스 과정에서 데이터가 어떤 식으로 흘러가고 처리되는지 자세히 알아봅시다.

 

잡 실행과정

1 : N 방식

1 - 잡 트래커(노드)

N - 태스크 트래커(노드)

 

  • 잡 트래커 : 태스크 트래커가 수행할 태스크를 스케줄링 함으로써 시스템 전체에서 모든 잡이 수행되도록 조절.
  • 태스크 트래커 : 태스크를 수행하고 각 잡의 전체 경과를 하나의 레코드로 유지하는 경과 보고서를 잡 트래커에 보냄. (태스크가 실패하면 잡 트래커는 그것을 다른 태스크 트래커에 다시 스케줄 한다.
  • 입력스플릿&스플릿 : 맵리듀스 잡의 입력크기. 각 스플릿마다 하나의 맵 태스크를 생성하고, 그 스플릿에 있는 각 레코드를 사용자 정의 맵 함수로 처리한다.





  • Split(Block)

- 하둡은 입력된 데이터를 고정된 크기의 조각으로 나눈다 ⇒ Split

- 각 Split 마다 하나의 Map Task 생성해 그 split의 레코드를 Map함수로 처리한다.

- 전체 입력을 통째로 처리하는 것 보다 시간이 더 짧게 걸린다.

- 보통 64MB의 HDFS Block을 사용하는 추세이다.

 

  • Map Tasks Status 

※Node == computer


① Data–local

: HDFS 내의 입력 Data가 있는 노드에서 Map Task 실행

- 데이터 지역성 최적화(Data Locality Optimization). 네트워크 대역폭을 사용하지 않아 가장 잘 작동


② Rack–local

: 동일 랙 중 다른 노드에서 찾아와 실행

- HDFS 블록 복제 본이 저장된 세 개의 노드 모두가 다른 맵 태스크 실행 중일 때도 있다. 이럴 경우 잡트래커는 블록 복제 본이 저장된 동일 랙 중 다른 노드에서 이용 가능한 맵 슬롯 가져온다.


③ Off-rack

: 다른 외부 랙의 노드에서 찾아와 실행

- 랙 간 네트워크 전송을 해야만 하기 때문에 네트워크 대역폭 사용.

    


각 태스크 결과물 저장 장소 

Map Task 

 로컬디스크

 맵 결과물은 중간 결과물

Reduce Task 

HDFS 

최종결과물이므로 안정성을 위해 HDFS에 저장한다. 


 

1. 단일 리듀스 태스크

: 모든 중간 데이터를 혼자 처리해야 해서 매우 느려진다.


















2. 다중 리듀스 태스크

: Map 태스크는 Reduce 태스크 개수만큼 파티션을 생성하고 결과를 분배한다.



















3. 리듀스 태스크 없음 

: 완전히 병렬로 수행. 셔플이 필요없는 경우에 적합.


 












컴바이너 함수 (Combiner Function)




대역폭은 제한적. 따라서 데이터 전송은 줄일수록 좋다.

- 맵과 리듀스 태스크 간 데이터전송을 최소화 하는 것이 좋다.

- 최적화와 관련 있기 때문에 필수 사항은 아니다. 0번을 써도, 여러 번 호출 되도 출력 결과는 같다.

- 매퍼와 리듀서 사이에서 셔플할 데이터의 양을 줄이는데 큰 도움을 준다.




출처: http://over153cm.tistory.com/entry/맵리듀스MapReduce란-1 [빅데이터는 넘커]
출처: http://over153cm.tistory.com/entry/맵리듀스란-2 [빅데이터는 넘커]

http://bigbigdata.tistory.com/5

'Hadoop ecosystem > MapReduce' 카테고리의 다른 글

Indexing  (0) 2018.04.14
InputType  (0) 2018.04.14
MapReduce 3  (1) 2018.04.09
MapReduce프로그래밍을 위한 HL  (0) 2017.05.04
MapReduce 2  (0) 2017.05.03

+ Recent posts