본문 바로가기
카테고리 없음

Hadoop에서 MapReduce 란?

by Nomangs 2022. 5. 31.
반응형

MapReduce 는 방대한 양의 데이터를 처리하는 데 사용되는 소프트웨어 프레임워크 및 프로그래밍 모델입니다. MapReduce 프로그램은 Map과 Reduce의 두 단계로 작동합니다. Map 작업은 데이터 분할 및 매핑을 처리하는 반면 Reduce 작업은 데이터를 섞고 줄입니다.

Hadoop은 Java, Ruby, Python, C++ 등 다양한 언어로 작성된 MapReduce 프로그램을 실행할 수 있습니다. 클라우드 컴퓨팅에서 Map Reduce의 프로그램은 본질적으로 병렬이므로 클러스터의 여러 시스템을 사용하여 대규모 데이터 분석을 수행하는 데 매우 유용합니다.

 

각 단계에 대한 입력은 키-값 쌍입니다. 또한 모든 프로그래머는 map function  reduce function 이라는 두 가지 기능을 지정해야 합니다 .

빅 데이터의 MapReduce 아키텍처 자세히 설명

전체 프로세스는 분할, 매핑, 셔플 및 축소의 4단계 실행을 거칩니다.

이제 이 MapReduce 튜토리얼에서 MapReduce 예제를 통해 이해해 보겠습니다.

빅 데이터 프로그램의 MapReduce에 대한 다음 입력 데이터가 있다고 가정합니다.

 

Input Splits

빅 데이터 작업의 MapReduce에 대한 입력은 입력 분할이라고 하는 고정 크기 조각으로 나뉩니다 . 입력 분할은 단일 맵에서 사용되는 입력 청크입니다.

Mapping

이것은 map-reduce 프로그램 실행의 가장 첫 번째 단계입니다. 이 단계에서 각 분할의 데이터는 매핑 함수로 전달되어 출력 값을 생성합니다. 이 예에서 매핑 단계의 작업은 입력 분할에서 각 단어의 발생 횟수를 계산하고(입력 분할에 대한 자세한 내용은 아래에 나와 있음) <단어, 빈도> 형식의 목록을 준비하는 것입니다.

Shuffling

이 단계는 매핑 단계의 출력을 소비합니다. 그 작업은 매핑 단계 출력에서 ​​관련 레코드를 통합하는 것입니다. 이 예에서 동일한 단어는 각각의 빈도와 함께 뭉쳐져 있습니다.

Reducing

이 단계에서 셔플링 단계의 출력 값이 집계됩니다. 이 단계는 셔플 단계의 값을 결합하고 단일 출력 값을 반환합니다. 간단히 말해서 이 단계에서는 전체 데이터 세트를 요약합니다.

이 예에서 이 단계는 셔플링 단계의 값을 집계합니다. 즉, 각 단어의 총 발생을 계산합니다.

 

MapReduce 아키텍처 자세히 설명

  •  
  • 각 분할에 대해 하나의 지도 작업이 생성된 다음 분할의 각 레코드에 대해 지도 기능을 실행합니다.
  • 분할을 처리하는 데 걸리는 시간이 전체 입력을 처리하는 데 걸리는 시간에 비해 적기 때문에 여러 분할을 갖는 것이 항상 유리합니다. 분할이 더 작을 때 분할을 병렬로 처리하기 때문에 부하 분산 처리가 더 좋습니다.
  • 그러나 분할 크기가 너무 작은 것도 바람직하지 않습니다. 분할이 너무 작으면 분할 관리 및 맵 작업 생성의 과부하가 전체 작업 실행 시간을 지배하기 시작합니다.
  • 대부분의 작업에서 분할 크기를 HDFS 블록 크기(기본적으로 64MB)와 동일하게 만드는 것이 좋습니다.
  • 맵 작업을 실행하면 HDFS가 아닌 각 노드의 로컬 디스크에 출력이 기록됩니다.
  • HDFS보다 로컬 디스크를 선택하는 이유는 HDFS 저장소 작업 시 발생하는 복제를 피하기 위함입니다.
  • 맵 출력은 최종 출력을 생성하기 위해 리듀스 작업에 의해 처리되는 중간 출력입니다.
  • 작업이 완료되면 지도 출력을 버릴 수 있습니다. 따라서 복제와 함께 HDFS에 저장하는 것은 과도합니다.
  • 노드 오류가 발생하면 지도 출력이 reduce 작업에서 사용되기 전에 Hadoop은 다른 노드에서 지도 작업을 다시 실행하고 지도 출력을 다시 생성합니다.
  • 작업 줄이기는 데이터 지역성의 개념에서 작동하지 않습니다. 모든 맵 태스크의 출력은 리듀스 태스크에 제공됩니다. 맵 출력은 리듀스 작업이 실행 중인 시스템으로 전송됩니다.
  • 이 시스템에서 출력은 병합된 다음 사용자 정의 reduce 함수로 전달됩니다.
  • 맵 출력과 달리 리듀스 출력은 HDFS에 저장됩니다(첫 번째 복제본은 로컬 노드에 저장되고 다른 복제본은 오프랙 노드에 저장됨). 따라서 리듀스 출력을 작성하면

MapReduce는 어떻게 작동합니까?

이제 이 맵리듀스 튜토리얼에서 맵리듀스가 어떻게 작동하는지 배울 것입니다.

Hadoop 은 작업을 작업으로 나눕니다. 두 가지 유형의 작업이 있습니다.

  1. Map tasks (Splits & Mapping)
  2. Reduce tasks (Shuffling, Reducing)

앞에서 말했다시피.

전체 실행 프로세스(Map 및 Reduce 작업 실행)는 두 가지 유형의 엔터티에 의해 제어됩니다.

  1. Jobtracker : 마스터 처럼 작동 (제출된 작업의 완전한 실행을 담당)
  2. Multiple Task Trackers : 각각이 작업을 수행하는 슬레이브 처럼 작동합니다.

시스템에서 실행을 위해 제출된 모든 작업에 대해 Namenode 에 상주하는 Jobtracker가 하나 있고 Datanode에 상주 하는 여러 tasktracker  있습니다 .

  • 작업은 클러스터의 여러 데이터 노드에서 실행되는 여러 작업으로 나뉩니다.
  • 다른 데이터 노드에서 실행할 작업을 예약하여 활동을 조정하는 것은 작업 추적기의 책임입니다.
  • 개별 작업의 실행은 작업의 일부를 실행하는 모든 데이터 노드에 있는 작업 추적기에 의해 관리됩니다.
  • 작업 추적기의 책임은 진행률 보고서를 작업 추적기로 보내는 것입니다.
  • 또한 태스크 트래커는 주기적으로 '하트비트' 신호를 Jobtracker에 보내 시스템의 현재 상태를 알려줍니다.
  • 따라서 작업 추적기는 각 작업의 전체 진행 상황을 추적합니다. 작업 실패 시 작업 추적기가 다른 작업 추적기에서 일정을 변경할 수 있습니다.
반응형

댓글