출처: http://over153cm.tistory.com/entry/맵리듀스란-2
맵리듀스 과정에서 데이터가 어떤 식으로 흘러가고 처리되는지 자세히 알아봅시다.
잡 실행과정
1:N방식
1 - 잡 트래커(노드)
N - 태스크 트래커(노드)
-
잡 트래커: 태스크 트래커가 수행할 태스크를 스케줄링 함으로써 시스템 전체에서 모든 잡이 수행되도록 조절.
-
태스크 트래커: 태스크를 수행하고 각 잡의 전체 경과를 하나의 레코드로 유지하는 경과 보고서를잡 트래커에 보냄. (태스크가 실패하면 잡 트래커는 그것을 다른 태스크 트래커에 다시 스케줄 한다.
-
입력스플릿&스플릿: 맵리듀스 잡의 입력크기. 각 스플릿마다 하나의 맵 태스크를 생성하고, 그 스플릿에 있는 각 레코드를 사용자 정의 맵 함수로 처리한다.
- Split
- 하둡은 입력된 데이터를 고정된 크기의 조각으로 나눈다 ⇒ Split
- 각 Split 마다 하나의 Map Task 생성해 그 split의 레코드를 Map함수로 처리한다.
- 전체 입력을 통째로 처리하는 것 보다 시간이 더 짧게 걸린다.
- 보통 64MB의 HDFS Block을 사용하는 추세이다.
- Map Tasks Status
① Data–local
: HDFS 내의 입력 Data가 있는 노드에서 Map Task 실행
- 데이터 지역성 최적화(Data Locality Optimization). 네트워크 대역폭을 사용하지 않아 가장 잘 작동
② Rack–local
: 동일 랙 중 다른 노드에서 찾아와 실행
- HDFS 블록 복제 본이 저장된 세 개의 노드 모두가 다른 맵 태스크 실행 중일 때도 있다. 이럴 경우 잡트래커는 블록 복제 본이 저장된 동일 랙 중 다른 노드에서 이용 가능한 맵 슬롯 가져온다.
③ Off-rack
: 다른 외부 랙의 노드에서 찾아와 실행
- 랙 간 네트워크 전송을 해야만 하기 때문에 네트워크 대역폭 사용.
각 태스크 결과물 저장 장소
맵리듀스 데이터 흐름
- 리듀스 태스크 개수는 독립적으로 지정한다. (입력 크기와는 관련X)
→ 클러스터 내 리듀서 슬롯의 개수 보다 약간 작게 설정하는 것이 가장 좋다.
- 단일 리듀스 태스크
: 모든 중간 데이터를 혼자 처리해야 해서 매우 느려진다.
: Map 태스크는 Reduce 태스크 개수만큼 파티션을 생성하고 결과를 분배한다.
3. 리듀스 태스크 없음
: 완전히 병렬로 수행. 셔플이 필요없는 경우에 적합.
컴바이너 함수 (Combiner Function)
대역폭은 제한적. 따라서 데이터 전송은 줄일수록 좋다.
- 맵과 리듀스 태스크 간 데이터전송을 최소화 하는 것이 좋다.
- 최적화와 관련 있기 때문에 필수 사항은 아니다. 0번을 써도, 여러 번 호출 되도 출력 결과는 같다.
- 매퍼와 리듀서 사이에서 셔플할 데이터의 양을 줄이는데 큰 도움을 준다.
[참고] http://blog.secmem.org/
http://bigbigdata.tistory.com/
'IT기술 관련 > 빅데이터 관련' 카테고리의 다른 글
데이터 마이닝 vs 텍스트 마이닝 (0) | 2016.01.22 |
---|---|
기존 데이터 분석 vs 빅데이터 분석 (0) | 2016.01.22 |
맵리듀스(MapReduce)란? -1- (0) | 2016.01.22 |
[빅데이터] 오픈소스 기반 빅데이터 (0) | 2016.01.21 |
[시각화] 데이터 시각화의 중요 keyword (0) | 2015.11.24 |