본문 바로가기

빅데이터/Hadoop

MapReduce 원리

 

MapReduce의 기본원리는 입력 파일을 일정 단위로 나눠서 처리하는 Mapper과 개별적인 결과를 집계하는 Reduce로 나누어져있습니다.

 

InputSplits

MapReduce 작업에서 map task를 구성하는 작업의 단위입니다. 기본적으로 HDFS 기본 block 단위(126 or 256mb로 나누게 됩니다. 이렇게 단위를 나누어서 여러 node에 분배하면 해당 node에서 작업을 진행하는 data locality라는특징을 갖습니다. 

 

Map

데이터를 key,value 형태로 만들어서 작업을 처리하는 과정입니다. 맵 결과는 우선 메모리 버퍼에 저장되지만 limit을 넘으면 디스크에 spill됩니다.

 

Combiner

네트워크의 bottleneck을 줄이기 위해 Reducer로 보내기 전에 적은 양의 데이터를 보내기 위함입니다. 예를 들어, [seoul, a] [busan, b] [seoul, c]이 있다면 3개를 보내기 보다, [seoul, {a,c}], [busan, b]총 2개를 보냅니다. 즉, 키 단위로 묶는 것입니다.

 

Map 과정이 끝나면(partitioning까지 종료) /tmp 로컬 디스크 영역에 데이터를 쓰게 되고, Reduce task가 copy해서 Reduce작업을 하게 됩니다.  해당 과정이 끝나면 Application Master가 삭제합니다. 

 

Partition & Shuffle

map의 결과를 reducer에게 보내는 과정을 shuffle이라고 합니다. 파티셔너는 각 mapper의 결과가 어느 reducer로 보내는지 정하는 과정인데, key를 hashcode로 변경하여 reducer를 정해줍니다. 그래야 같은 key끼리 모을 수 있기 때문입니다. 

 

Reduce

분산 처리된 결과를 합쳐서 hdfs에 저장하는 역할을 합니다.

 

 

 

Reference

https://sparkdia.tistory.com/53

 

맵리듀스(Map-Reduce) 상세 작동 방법

맵리듀스(Map-Reduce) 데이터 흐름 하둡 맵리듀스는 클러스터 환경에서 대량의 데이터를 병렬로 처리하는 응용 프로그램을 쉽게 작성할 수 있는 소프트웨어 프레임워크입니다. 맵리듀스 작업은 일

sparkdia.tistory.com

 

 

맵리듀스(Map-Reduce) 상세 작동 방법

맵리듀스(Map-Reduce) 데이터 흐름 하둡 맵리듀스는 클러스터 환경에서 대량의 데이터를 병렬로 처리하는 응용 프로그램을 쉽게 작성할 수 있는 소프트웨어 프레임워크입니다. 맵리듀스 작업은 일

sparkdia.tistory.com

https://m.blog.naver.com/sohyunst/221617253997

 

하둡(Hadoop)의 분산 처리와 맵리듀스(MapReduce)의 개념

빅데이터의 처리 속도를 높이기 위해서 프로그램의 각 부분을 "병렬"로 수행할 필요가 있습니다....

blog.naver.com

http://www.openwith.net/?p=506 

 

Hadoop 튜토리얼 (4-2) Map Reduce | 임팩트라인

Hadoop 튜토리얼 (4-2) Map Reduce MapReduce 의 데이터 흐름 Figure 4.4: High-level MapReduce의 pipeline HDFS 클러스터에 파일이 적재됨으로써 MapReduce 입력이 시작된다. 이들 파일은 전체 node에 균등하게 배분되는

www.openwith.net

https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=alice_k106&logNo=220462251435 

 

34. [MapReduce] 맵리듀스 원리와 그 과정

1. 서론 빅데이터를 처리하기 위한 과정의 일환으로 맵리듀스라는 강력한 패러다임이 자리잡은지는 꽤 됬다...

blog.naver.com

https://taaewoo.tistory.com/16

'빅데이터 > Hadoop' 카테고리의 다른 글

[Hadoop] corrupt/missing block  (0) 2023.03.19
Block Count / Small files 해결  (0) 2022.09.24
Hadoop HA 아키텍처  (1) 2022.09.21
Yarn 동작 원리 & Scheduler  (0) 2022.09.21
하둡 아키텍처 참고 글  (0) 2022.09.09