맵리듀스(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. 단일 리듀스 태스크
: 모든 중간 데이터를 혼자 처리해야 해서 매우 느려진다.
: 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 |