분산파일시스템의 큰 데이터를 맵리듀스로 분석, 변환
- 데이터, 연산을 많은 호스트들에 분산해서 실행
- 앱의 연산(task) 를 병렬실행 close to data
평범한 서버를 계속 추가하면 연산능력을 늘릴 수 있다.
맵리듀스는 프로그래밍 모델
키/밸류 형태
동기 : 계산들이 여러 머신들에 분산돼서 실행됨. -> 오버헤드가 큼. -> 추상화 레벨 높여 시스템이 알아서 해줘 -> 맵리듀ㅜ스 탄생
단순 계산의 추상화. 복잡한 부분은 뒤로 숨김.
논리 레코드(텍스트 한 줄 등)에 map 적용 -> 키 밸류 생성
같은 키의 값들은 같은 reduce로 묶임 적용 -> combine
map 과 reduce만 만들면 됨.
데이터가 한 블록의 크기보다 크면 여러 블록으로 나누어 처리
input -> splitting -> mapping -> shuffling -> reducing -> final result
장점 : 입력데이터가 아무리 커도 소스 수정없이 작동함.
input split 은 block size와 같다
input split 당 mapper 생성 , 한 줄(record) 마다 map함수
worker :input을 map 함수에 보냄. 중간 키/밸류는 메모리에 버퍼.
reducer 수 만큼 파티션, sort해서 저장
맵단계가 끝나면 각 파티션을 reducer 한테 보냄.
reducer 여러개 생성해서 key partitioning으로 부하를 줄일 수 있다.
오류 처리
마스터가 워커에게 핑 보냄. 주기적 메시지 교환.
워커가 죽으면 다른 워커한테 시킴. 완료된 map task는 다시 실행됨. 로컬 디스크에 저장되기 떄문.
완료된 reduce task는 다시 실행될 필요 없음. 항상 글로벌 파일 시스템에 저장되기 때문.
DataLocal : 같은 노드 내에서 실행
RackLocal : 같은 Rcak에 있는 노드에서 데이터 가져와서 실행
Part 2
master - job tracker
worker - task tracker
namenode, job submission node <-> slave node
HDFS : namenode <-> datanode
MapReduce : JobTracker <-> TaskTracker
slave node 마다 tasktracker, datanode를 다 들고있음
JobTracker : data locallity 구현의 주체. 한개만 있으면 single point failure 문제가 발생할 수있음. yarn에서 해결 추후에
JAR파일은 HDFS에 가져다 놓음. \
slot : tasktracker는 slot들로 구성되어있음
'클라우드 컴퓨팅' 카테고리의 다른 글
4-2 MapReduce Algorithm Design part3 (0) | 2021.11.18 |
---|---|
MapReduce Alorithm Design part2 (0) | 2021.11.11 |
Mapreduce Algorithm Design (0) | 2021.11.05 |
하둡 실습 (0) | 2021.10.14 |
Hadoop HDFS (1) | 2021.10.08 |