Hadoop의 MapReduce란 무엇입니까? 빅 데이터 Archi강의
Hadoop의 MapReduce란 무엇입니까?
MapReduce 엄청난 양의 데이터를 처리하는 데 사용되는 소프트웨어 프레임워크 및 프로그래밍 모델입니다. MapReduce 프로그램 작업은 Map과 Reduce의 두 단계로 진행됩니다. 지도 작업은 데이터 분할 및 매핑을 처리하는 반면, 축소 작업은 데이터를 섞고 줄입니다.
Hadoop은 다양한 언어로 작성된 MapReduce 프로그램을 실행할 수 있습니다. Java루비, Python및 C++. 클라우드 컴퓨팅의 Map Reduce 프로그램은 본질적으로 병렬적이므로 클러스터의 여러 머신을 사용하여 대규모 데이터 분석을 수행하는 데 매우 유용합니다.
각 단계의 입력은 다음과 같습니다. 핵심 가치 한 쌍. 또한 모든 프로그래머는 두 가지 기능을 지정해야 합니다. 지도 기능 and 감소 기능.
MapReduce Archi예제로 설명하는 빅데이터 강의
전체 프로세스는 분할, 매핑, 섞기, 축소의 네 가지 실행 단계를 거칩니다.
이제 이 MapReduce 튜토리얼에서는 MapReduce 예제를 통해 이해해 보겠습니다.
MapReduce에 대한 다음과 같은 입력 데이터가 있다고 가정해 보겠습니다. 빅데이터 프로그램
Welcome to Hadoop Class Hadoop is good Hadoop is bad
MapReduce 작업의 최종 출력은 다음과 같습니다.
나쁜 | 1 |
클래스 | 1 |
좋은 | 1 |
하둡 | 3 |
is | 2 |
에 | 1 |
환영합니다 | 1 |
빅데이터의 MapReduce의 다음 단계를 거쳐 데이터가 처리됩니다.
입력 분할:
빅 데이터 작업의 MapReduce에 대한 입력은 고정 크기 조각으로 나뉩니다. 입력 분할 입력 분할은 단일 맵에서 사용되는 입력 덩어리입니다.
매핑
이것은 맵-리듀스 프로그램 실행의 첫 번째 단계입니다. 이 단계에서는 각 분할의 데이터가 매핑 함수에 전달되어 출력 값을 생성합니다. 우리의 예에서 매핑 단계의 작업은 입력 분할에서 각 단어의 발생 횟수를 세는 것입니다(입력 분할에 대한 자세한 내용은 아래에 나와 있음). 그리고 다음과 같은 형태의 목록을 준비합니다.
셔플 링
이 단계에서는 매핑 단계의 출력을 사용합니다. 그 임무는 매핑 단계 출력에서 관련 레코드를 통합하는 것입니다. 이 예에서는 동일한 단어가 해당 빈도에 따라 함께 묶입니다.
감소
이 단계에서는 Shuffling 단계의 출력 값이 집계됩니다. 이 단계는 Shuffling 단계의 값을 결합하고 단일 출력 값을 반환합니다. 간단히 말해, 이 단계는 전체 데이터 세트를 요약합니다.
이 예에서 이 단계는 Shuffling 단계의 값을 집계합니다. 즉, 각 단어의 총 발생 횟수를 계산합니다.
MapReduce Archi강의가 자세하게 설명되어 있어요
- 각 분할에 대해 하나의 맵 작업이 생성된 다음 분할의 각 레코드에 대해 맵 기능을 실행합니다.
- 전체 입력을 처리하는 데 걸리는 시간에 비해 분할을 처리하는 데 걸리는 시간이 작기 때문에 여러 개의 분할을 사용하는 것이 항상 유리합니다. 분할이 작을수록 분할을 병렬로 처리하므로 로드 균형 조정이 더 좋습니다.
- 그러나 분할 크기가 너무 작은 것도 바람직하지 않습니다. 분할이 너무 작으면 분할 및 맵 작업 생성 관리에 대한 과부하가 전체 작업 실행 시간을 지배하기 시작합니다.
- 대부분의 작업에서는 분할 크기를 HDFS 블록 크기(기본적으로 64MB)와 동일하게 만드는 것이 좋습니다.
- 맵 작업을 실행하면 HDFS가 아닌 해당 노드의 로컬 디스크에 출력이 기록됩니다.
- HDFS 대신 로컬 디스크를 선택하는 이유는 HDFS 저장 작업 시 발생하는 복제를 방지하기 위해서입니다.
- 맵 출력은 리듀스 태스크에 의해 처리되어 최종 출력을 생성하는 중간 출력입니다.
- 작업이 완료되면 지도 출력을 버릴 수 있습니다. 따라서 복제를 통해 HDFS에 저장하면 과잉이 됩니다.
- 노드 오류가 발생하는 경우 축소 작업에서 맵 출력을 사용하기 전에 Hadoop은 다른 노드에서 맵 작업을 다시 실행하고 맵 출력을 다시 생성합니다.
- 작업 감소는 데이터 지역성 개념에서 작동하지 않습니다. 모든 맵 작업의 출력은 축소 작업에 제공됩니다. 맵 출력은 축소 작업이 실행 중인 머신으로 전송됩니다.
- 이 시스템에서는 출력이 병합된 다음 사용자 정의 축소 함수로 전달됩니다.
- 맵 출력과 달리 축소 출력은 다음 위치에 저장됩니다. HDFS (첫 번째 복제본은 로컬 노드에 저장되고 다른 복제본은 오프랙 노드에 저장됩니다.) 따라서 감소 출력을 작성합니다.
MapReduce는 작업을 어떻게 구성합니까?
이제 이 MapReduce 튜토리얼에서는 MapReduce가 어떻게 작동하는지 알아 보겠습니다.
하둡 작업을 작업으로 나눕니다. 작업에는 두 가지 유형이 있습니다.
- 지도 작업 (분할 및 매핑)
- 작업 감소 (셔플링, 감소)
상술 한 바와 같이.
전체 실행 프로세스(Map 및 Reduce 작업 모두 실행)는 두 가지 유형의 엔터티에 의해 제어됩니다.
- 직업 추적기: 다음과 같은 역할을 합니다. 석사 (제출된 작업의 완전한 실행을 담당)
- 다중 작업 추적기: 다음과 같이 행동한다 노예, 각자가 일을 수행하고 있다
시스템에서 실행을 위해 제출된 모든 작업에는 하나의 작업이 있습니다. 직업 추적기 에 거주하는 네임노드 거기에는 여러 작업 추적기 에 거주하는 데이터노드.
- 작업은 여러 개의 작업으로 나뉜 다음 클러스터 내의 여러 데이터 노드에서 실행됩니다.
- 다른 데이터 노드에서 실행되도록 작업을 예약하여 활동을 조정하는 것은 작업 추적기의 책임입니다.
- 그런 다음 개별 작업의 실행은 작업의 일부를 실행하는 모든 데이터 노드에 있는 작업 추적기에 의해 관리됩니다.
- 작업 추적기의 책임은 진행 보고서를 작업 추적기에 보내는 것입니다.
- 또한 작업 추적기는 주기적으로 '심장박동' 시스템의 현재 상태를 알리기 위해 Jobtracker에 신호를 보냅니다.
- 따라서 작업 추적기는 각 작업의 전반적인 진행 상황을 추적합니다. 작업이 실패하는 경우 작업 추적기는 다른 작업 추적기에서 해당 작업을 다시 예약할 수 있습니다.