본문 바로가기
Data Base/Hadoop

[Hadoop] : 맵리듀스 기본 개념, 특징, 주요 처리 과정과 프로젝트 설명

by 오주현 2022. 4. 26.
반응형

맵리듀스 기본 개념

  • 하둡 핵심 코어 기술 중 하나이다.
  • 분산된 다양한 노드들의 작업을 통해 처리하는 기술이다.
  • 각 노드에 분산되어 있는 데이터를 하나의 노드에 저장된 것 같이 처리할 수 있다.
  • 맵리듀스는 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 바이트이다. 띄어쓰기는 바이트가 없다.
  • 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

 

맵리듀스 이해

맵리듀스 기본 개념

ohju96.notion.site

 

반응형

댓글