반응형
맵리듀스 기본 개념
- 하둡 핵심 코어 기술 중 하나이다.
- 분산된 다양한 노드들의 작업을 통해 처리하는 기술이다.
- 각 노드에 분산되어 있는 데이터를 하나의 노드에 저장된 것 같이 처리할 수 있다.
- 맵리듀스는 Map과 Reduce로 구성되어있다.
맵리듀스 특징
- 자동으로 분산 및 병렬 처리 수행
- 장애 허용(Fault Tolerance)
- 개발자에 적합한 처리 기술
- 맵리듀스는 Java로 개발되었다.
- 맵리듀스 프로그래밍도 Java로 개발한다.
맵리듀스 주요 처리 과정
- Map
- 싱글 HDFS 블록들에 대해 각 Map 작업이 수행된다.
- Map 작업들은 대체로 블록이 저장된 노드에서 실행된다.
- Shuffle and Sort
- 모든 Mapper에서 Shuffle and Sort 작업이 실행된다.
- 모든 Map 작업들이 종료될 때 수행하고, Reducer 작업이 시작하기 전에 종료된다.
- 맵리듀스 프레임워크에서 자동 실행된다.
- 모으는 역할을 한다.
- Reducer
- Map 작업 결과로 나온 데이터가 Shuffle and Sort 수행하고 나온 뒤 실행한다.
- 최종 산출물이다.
- Final Output
자바 객체 중심의 맵리듀스 처리 과정
- Mapper와 Reducer만 코딩하면 나머지는 알아서 돌아간다.
글자 빈도수 세기(Word Count) 예
- 단어가 띄어쓰기를 기준으로 분류가 된다.
- 맵리듀스를 통해 읽을 때 Record Reader라는 Java 객체를 통해 읽게 된다.
- Record Reader
- 키, 벨류 구조로 데이터를 만들어준다.
- 키는 중복이 안 된다. 벨류는 중복이 된다.
- 중복 값을 따로 계산하지 않아도 나중에 취합해서 보내주게 된다.(뒤에 내용 참고한다.)
- 맵 리듀스에서 파일을 읽고 맵 함수에서 처리할 수 있는 구조로 만드는데 앞에 값이 절대로 중복되지 않는 값으로 만들어준다. Byte를 키 값에, Value 값에는 한 줄 마다 가져간다.
- 2번쨰 값을 보면 23Byte가 된다. t가 23번째 바이트에 있다.
- 영어는 한 글자당 1 바이트이다. 띄어쓰기는 바이트가 없다.
- 2번쨰 값을 보면 23Byte가 된다. t가 23번째 바이트에 있다.
- Record Reader가 한 줄로 쪼개주면 쪼개진 줄 마다 Mapper가 처리한다. 이때, 멀티 쓰레드로 쓰레드의 개수는 맵 리듀스가 알아서 조절해 준다.
- 때문에, 단점일 수도 있지만 프로그램 짤 때 순서대로 안 될 수 있다는 것을 전제로 깔고 들어가야 한다.
- 멀티 쓰레드는 실행 시키고 다음 것을 안 기다리고 빨리 빨리 진행 시킨다.
- 싱글 쓰레드는 하나 실행 시키고 다 끝나고 다음 것을 실행한다.
- 때문에, 단점일 수도 있지만 프로그램 짤 때 순서대로 안 될 수 있다는 것을 전제로 깔고 들어가야 한다.
Mapper 처리 동작 과정
- 하둡의 저장된 노드들은 Map 작업을 수행한다.
- 최소한 네트워크 트래픽을 사용한다.
- 많은 Mapper 들이 병렬로 실행된다.
- 데이터 노드에서 Map 함수가 실행이 된다.
- 각 노드에서 Map 함수가 돌고 있어서 이걸 분산 처리라고 부른다. 프로젝트에서는 Slave1, Slave2라고 부른다.
- → 이걸 하나로 모아서 처리해야 하는데 그러기 위해서 사용하는 게 Shuffle and Sort이다.
- 서버에서 한 번 돌 셔플 앤 소트를 돌리고 마스터 서버로 불린다.
Shuffle and Sort 처리과정
- 가나다 순으로 정렬을 한다.
- 키를 기반으로 키가 동일한 것 끼리 뭉치고 정렬을 한다.
- 값에 대한 결과 값은 무조건 List Collection 구조이다.
- 변환된 데이터 구조를 기반으로 우리가 코딩을 하는 것, 최종 코딩 결과인 Reducer를 실행하게 된다.
- 마스터 노드에서 Shuffle and Sort가 실행이 된다. 즉, 최종으로 모이는 곳이 마스터 노드가 된다.
Reducer
- 셔플 앤 소트가 보내주는 결과 값을 가지고 처리한다. 벨류 값을 더해주는 형태의 구조로 바꾸어 줄 수도 있다.
- 리듀서는 무조건 디폴트 값은 1개이다.
- 리듀서 또한 멀티 쓰레드로 들어간다. 하나씩 계속 기다리지 않고 멀티 쓰레드 방식으로 동작이 되게 된다.
- 마지막으로 실행이 되므로 당연히 마스터 노드에서 실행이 된다.
https://ohju96.notion.site/0950917b561a49948bf44021ddb0442b
반응형
'Data Base > Hadoop' 카테고리의 다른 글
[Hadoop] : 맵리듀스 버전 별 차이 (0) | 2022.04.28 |
---|---|
[Hadoop] : 맵리듀스를 활용해서 단어별 빈도수 분석, 단어 세기 (0) | 2022.04.26 |
[Hadoop] : 하둡 동작 테스트 - Master Server (0) | 2022.04.21 |
[Hadoop] : 하둡 시작할 때 실행되는 데몬들 (0) | 2022.04.21 |
[Hadoop] : 하둡 시작 - Master Server (0) | 2022.04.21 |
댓글