hadoop mapreduce tutorial with examples what is mapreduce
이 튜토리얼에서는 MapReduce가 무엇인지, 그 장점과 Hadoop Map Reduce가 예제에서 어떻게 작동하는지 이해합니다.
이전 튜토리얼에서 우리는 Hadoop HDFS와 읽기 및 쓰기 메커니즘에 대해 배웠습니다. 이제 다른 Hadoop 구성 요소 인 MapReduce를 살펴 보겠습니다.
다음을 자세히 살펴 보겠습니다.
- MapReduce 란 무엇입니까?
- 이점
- MapReduce의 정확한 접근 방식은 무엇입니까?
=> 독점적 인 BigData 교육 자습서 시리즈를 보려면 여기를 방문하십시오.
학습 내용 :
MapReduce 란 무엇입니까?
계속해서 Hadoop 구성 요소부터 시작하겠습니다. 앞서 설명했듯이 Hadoop에는 두 가지 주요 구성 요소, 즉 Hadoop HDFS와 Hadoop Map Reduce가 있습니다.
Hadoop HDFS는 대용량 데이터를 여러 랙에 저장하는 데 사용되는 파일 배포 시스템입니다.
여기서는 Hadoop의 처리 단위, 즉 MapReduce에 대해 설명합니다.
다음으로 제기되는 질문은 'Map Reduce가 무엇이며 왜 필요한가?'입니다.
Hadoop MapReduce는 '처리 장치' 이 컴포넌트를 사용하여 Hadoop HDFS에 저장된 빅 데이터를 처리 할 수 있습니다.
일하기 좋은 최고의 빅 데이터 기업
그러나 정확한 요구 사항은 무엇입니까? Hadoop의이 구성 요소가 필요한 이유는 무엇입니까?
Hadoop HDFS에 저장된 빅 데이터는 전통적으로 저장되지 않습니다. 데이터는 각 DataNode에 저장된 데이터 청크로 분할됩니다. 따라서 전체 데이터가 하나의 중앙 위치에 저장되지 않습니다.
따라서 Java와 같은 기본 클라이언트 응용 프로그램이나 이러한 응용 프로그램은 현재 형식의 데이터를 처리 할 수 없으며 각 데이터 노드에 저장된 조각화 된 데이터 블록을 처리 할 수있는 특수 프레임 워크가 필요합니다.
처리는 Hadoop MapReduce 처리를 사용하여 수행됩니다.
맵 축소 요약
위의 다이어그램은 Map Reduce, 기능 및 용도에 대한 개요를 제공합니다.
MapReduce의 응용 프로그램과 사용 위치부터 시작하겠습니다. 예를 들어 그것은을 위해 사용됩니다 분류 자, 인덱싱 및 검색 , 및 생성 추천 엔진 전자 상거래 사이트 (Flipkart, Amazon 등)에서도 사용됩니다. 해석학 여러 회사에서.
기능 관점에서 볼 때 프로그래밍 모델 사용할 수 있습니다 대규모 분산 모델 Hadoop HDFS와 같으며 병렬 프로그래밍 기능이있어 매우 유용합니다.
Map Reduce에서 함수를 볼 때 Map Function과 Reduce 함수라는 두 가지 함수가 실행됩니다.
이 기술은 Google, Yahoo, Facebook과 같은 주요 조직에서 구현되었으며 HDFS, PIG, HIVE와 같은 Apache Hadoop에서도 채택되었으며 No-SQL이라고도 알려진 HBase를 사용하여 데이터를 저장하거나 빅 데이터를 실행 및 처리하기 위해 채택되었습니다.
Map-Reduce의 장점
이 기술에는 두 가지 장점이 있습니다.
# 1) 병렬 처리
첫 번째 장점은 병렬 처리입니다. Map Reduce를 사용하면 항상 데이터를 병렬로 처리 할 수 있습니다.
위의 다이어그램에 따라 5 개의 슬레이브 머신이 있으며 일부 데이터는이 머신에 있습니다. 여기서 데이터는 Hadoop Map Reduce를 사용하여 병렬로 처리되므로 처리 속도가 빨라집니다.
실제로 여기서 일어나는 일은 전체 데이터 청크가 Hadoop HDFS에 의해 HDFS 블록으로 분할되고 Map-Reduce가 이러한 데이터 청크를 처리하므로 처리 속도가 빨라집니다.
# 2) 데이터 지역성
이것은 Hadoop MapReduce가 제공하는 다목적 기능 중 하나입니다. 즉, 데이터가있는 곳에서 데이터를 처리 할 수 있습니다.
무슨 뜻인가요?
이전 HDFS 튜토리얼에서 우리는 Hadoop 클러스터로 이동 한 데이터가 HDFS 블록으로 분할되고 이러한 블록이 SlaveMachines 또는 DataNode에 저장된다는 것을 이해했습니다. Map-Reduce는 데이터가 HDFS 블록으로 상주하는 각 슬레이브 노드 또는 데이터 노드에 대한 처리 및 논리를 감지합니다.
처리는 여러 위치에있는 더 작은 데이터 청크에 대해 병렬로 실행됩니다. 이렇게하면 빅 데이터를 한 위치에서 다른 위치로 이동하는 데 필요한 네트워크 대역폭뿐만 아니라 많은 시간을 절약 할 수 있습니다.
우리가 처리하는 데이터는 덩어리로 나누어 진 빅 데이터라는 것을 기억하십시오. 할당 된 네트워크 채널을 통해 직접 빅 데이터를 중앙 집중식 머신으로 이동하고 처리하기 시작하면 소비 할 때 이점이 없습니다. 중앙 집중식 서버로 데이터를 이동할 때 전체 대역폭.
혜택:
따라서 Hadoop MapReduce를 사용하는 것은 '병렬 처리' , 우리는 또한 데이터 청크가 존재하는 각각의 슬레이브 노드 또는 데이터 노드에서 데이터를 처리하고 있습니다. “많은 네트워크 대역폭 절약” 매우 유익합니다.
마지막으로 SlaveMachine은 SlaveMachines에 저장된 데이터의 처리로 수행되며 결과가 SlaveMachines에 저장된 블록만큼 크지 않기 때문에 결과를 Master Machine으로 다시 보냅니다. 따라서 많은 대역폭을 사용하지 않습니다.
슬레이브 머신은 결과를 마스터 머신으로 다시 보내고,이 결과는 함께 집계되고 최종 결과는 작업을 제출 한 클라이언트 머신으로 다시 전송됩니다.
여기서 한 가지 질문이 발생합니다. 누가 어떤 데이터를 어떤 DataNode에서 처리해야하는지 결정하는 것입니다.
Client는 작업을 Resource Manager에 제출하고 Resource Manager는 데이터가 상주하는 각 DataNode에서 작업을 실행하는 방향을 제공하는 사람이며, 사용 가능한 가장 가까운 DataNode를 기반으로 결정하여 많은 네트워크 대역폭은 사용되지 않습니다.
전통적인 대. MapReduce 방법
이를 설명하기 위해 대부분의 대형 보험 회사가 여러 도시에 지점을두고 있기 때문에 모든 사람이 보험 회사 정책을 알고있을 것입니다.
그 지점에는 생명 보험을 신청 한 사람이“n”명 있습니다.
사람들이 와서 생명 보험 정책을 신청하는 5 개의 보험 회사 지점이있는 시나리오를 살펴 보겠습니다. 이제 우리는 사용할 수 있고 위치하는 지점에 대한 모든 정보를 보유한 보험 회사의 한 본사도 있습니다.
단, A, B, C, D, E 각 지점에 방문하여 생명 보험을 신청할 경우 해당 지점 자체에 보험 신청이 보관되며 해당 정보는 보험 회사 본사와 공유되지 않습니다.
전통적인 방법 :
사람들이 전통적으로 정책을 어떻게 적용하는지 살펴 보겠습니다. 전통적으로이 문제를 해결하기 위해 모든 신청서가 보험사 본사로 이전 된 후 신청 절차가 시작됩니다.
이 경우 비용이 많이 드는 보험사 본사로 모든 신청서를 옮겨야합니다. 즉, 보험사 지점에서 모든 신청서를 수집하여 보험사 본사로 가져 가야합니다.
이 활동을 수행하는 데 막대한 노력과 함께 비용이 관련되는 방식입니다.
이것의 또 다른 측면은 각 지점의 정책을 위해 사람들이 신청 한 모든 신청서를 처리해야하는 부담이 많은 보험사 본사입니다.
보험사가 모든 지점에서 신청 한 신청서를 처리하고 있기 때문에 시간이 오래 걸릴 것입니다. 결국이 프로세스는 잘 작동하지 않습니다.
MapReduce 방법
Map-Reduce가이 문제를 어떻게 해결하는지 살펴 보겠습니다.
MapReduce는 Data Locality를 따릅니다. 즉, 모든 애플리케이션을 보험 회사 본사로 가져 오지는 않고 대신 각 지점에서 애플리케이션 처리를 병렬로 수행합니다.
모든 지점에 적용된 신청서가 처리되면 처리 된 세부 정보를 보험사 본사로 반송합니다.
이제 보험 회사 본사는 각 지점에서 전송 된 처리 된 응용 프로그램의 수를 집계하고 해당 데이터베이스 또는 저장소 센터에 세부 정보를 보관하면됩니다.
이러한 방식으로 처리가 매우 쉽고 빠르며 보험 계약자는 즉시 혜택을받습니다.
지도 축소
이전 예에서는 다양한 분기에 분산 된 입력 (애플리케이션)이 있었고 모든 입력은 해당 맵 함수에 의해 처리되었습니다.
MapReduce에는 Map Function과 Reduce Function의 두 가지 기능이 있습니다.
각 분기에서 수행 된 처리 부분은 Map 기능에 의해 수행되었습니다. 따라서 모든 지점의 각 입력 (응용 프로그램)은 Map 기능을 사용하여 처리 한 후 처리 된 세부 정보를 보험사 본사로 전송하고 집계 부분은 Reduce 기능으로 수행합니다.
집계 된 처리 된 애플리케이션 세부 사항이 출력으로 제공됩니다.
이것은 이전 예에서 일어난 일입니다. 전체 프로세스는 Map Task와 Reduce Task로 구분되었습니다.
맵 태스크는 입력을 받고 맵 태스크의 출력은 입력으로 축소 태스크에 제공되며이 축소 태스크는 최종적으로 클라이언트에게 출력을 제공합니다.
더 나은 방식으로 이해하기 위해 MapReduce의 구조를 살펴 보겠습니다.
MapReduce 태스크는 키-값 쌍에서 작동하므로 맵에 대해 이야기 할 때 맵은 입력을 키-값으로 취하고 출력을 키-값 목록으로 제공합니다. 이 키-값 목록은 셔플 단계를 거치고 키 입력 및 값 목록이 Reducer로 이동합니다.
마지막으로 Reducer는 키-값 쌍 목록을 제공합니다.
MapReduce 예제 – 단어 개수 프로세스
다른 예를 들어 보겠습니다. 단어 수 계산은 MapReduce 방식으로 처리합니다. 이 예제는 Java 프로그래밍의 입문 예제 인 'Hello World'와 동일합니다.
다이어그램에 따라 입력이 있었고이 입력은 여러 입력으로 분할되거나 분할됩니다. 따라서이 프로세스를 입력 분할이라고하며 전체 입력은 새 줄 문자를 기반으로 데이터 분할로 나뉩니다.
첫 번째 줄은 첫 번째 입력입니다. Bigdata Hadoop MapReduce , 두 번째 줄은 두 번째 입력입니다. MapReduce Hive 빅 데이터 마찬가지로 세 번째 입력의 경우 다음과 같습니다. Hive Hadoop Hive MapReduce .
다음 단계 인 매핑 단계로 넘어가겠습니다. 이제 매핑 단계에서 키-값 쌍 목록을 만듭니다. 따라서 입력은 키와 값입니다. 여기서 키는 줄 번호의 오프셋 일뿐입니다. 줄 번호는 키이고 전체 줄은 값입니다.
안드로이드 용 스파이 앱 Top 10
따라서 라인 1의 오프셋은 키이고 값은 Bigdata Hadoop MapReduce . 실생활에서 줄 번호 또는 오프셋은 16 진수이지만 쉽게하기 위해 1 또는 2로만 간주합니다.
따라서 라인 1이 키가되고 전체 라인이 값이됩니다. 매핑 함수를 통과 할 때 매핑이 수행하는 작업은 키-값 쌍 목록을 생성합니다. 예를 들어 빅 데이터 , 그래서이 함수는 행의 모든 단어를 읽고 쉼표 뒤에 하나 (1)를 표시합니다.
하나 (1)를 값으로 표시합니다. 처럼 Bigdata, 1 Hadoop, 1 및 MapReduce, 1 . 여기서 질문은 우리가 각 단어 뒤에 하나 (1)를 넣는 이유입니다.
그 이유는 빅 데이터 그래서 하나의 카운트입니다 빅 데이터, 1 . 비슷하게, 하둡, 1 과 MapReduce, 1 그 자체가 하나의 개수를 가지고 있기 때문에 하나 (1)를 값으로 표시합니다. 두 번째 줄 또는 두 번째 줄에 대해 동일한 방식으로, MapReduce Hive 빅 데이터 .
따라서 동일한 방식으로 매핑 함수는 다시 해당 키-값 쌍 목록을 생성하므로 개수에 따라 키-값 쌍 목록은 다음과 같습니다. MapReduce, 1 하이브, 1 과 빅 데이터, 1 .
3 번 줄에 대한 매핑 함수의 결과와 동일합니다. Hive, 2 Hadoop, 1 과 MapReduce, 1 .
셔플 링 단계로 넘어가겠습니다.이 단계에서는 모든 키에 대한 목록이 준비되어 있습니다. Shuffling 단계에서 Key의 모양을 찾습니다. 빅 데이터 목록에 값을 추가합니다. 그럼 여기서 무슨 일이 일어나는지 봅시다.
두 개의 들어오는 화살표를 볼 수 있듯이 첫 번째 화살표는 목록 1에서 나오고 다른 화살표는 목록 2에서 나오므로 결과는 빅 데이터, (1,1) .
마찬가지로 우리가 단어를 볼 때 하둡 , 다시 하둡 가치에 대한 또 다른 목록이 준비됩니다. 두 개의 들어오는 화살표가 Shuffling을 가리키는 것을 볼 수 있습니다. 하둡 목록 2와 목록 3에서 각각 선택됩니다. 즉, 셔플 링 후 최종 결과가 Hadoop, (1, 1) .
같은 방식으로 우리는 다음과 같은 나머지 단어를 얻을 것입니다. 하이브, (1, 1, 1) 과 MapReduce, (1, 1, 1) 값 목록과 함께 또는 각 목록의 단어 가용성에 따라 Count 목록을 말합니다.
이제 감소 단계로 오십시오.이 단계에서는 모든 키에 대해 목록에있는 값의 집계를 시작합니다. 그래서 빅 데이터, 목록에는 두 개의 값이 있습니다. (열한) 따라서 이러한 값의 제출이 완료됩니다. 빅 데이터, 2 .
마찬가지로 하둡 값은 합계가됩니다. (열한) 제출은 하둡, 2 .
같은 방식으로 하이브 과 맵리 듀스, Reducing Function에 대한 제출은 하이브, 3 과 MapReduce, 3 각기.
마지막으로“전체 MapReduce 단어 수 프로세스”의 아래 다이어그램과 같이 최종 결과가 클라이언트로 다시 전송됩니다.
전반적인 MapReduce 단어 수 프로세스
이것이 MapReduce Way를 사용할 때 전체 단어 개수 프로세스가 작동하는 방식입니다.
결론
이 튜토리얼에서 우리는 다음을 배웠습니다.
- Hadoop Map Reduce는 '처리 장치' Hadoop의.
- Hadoop HDFS에 저장된 빅 데이터를 처리하기 위해 Hadoop Map Reduce를 사용합니다.
- 검색 및 인덱싱, 분류, 권장 사항 및 분석에 사용됩니다.
- 프로그래밍 모델, 병렬 프로그래밍 및 대규모 분산 모델과 같은 기능이 있습니다.
- MapReduce의 설계 패턴은 다음과 같습니다. 요약, 최고 기록 분류, 정렬 및 조인 및 선택과 같은 분석.
- 두 가지 기능 만 있습니다 즉, 매퍼 기능 및 감속기 기능.
- 병렬 처리 및 데이터 지역 성은 Hadoop MapReduce의 좋은 장점입니다.
- MapReduce 프로세스는 INPUT, SPLITTING, MAPPING, SHUFFLING, REDUCING 및 FINAL RESULT의 6 단계로 나뉩니다.
이 튜토리얼의 모든 내용은 다음 튜토리얼에서 다룰 것입니다.
- MapReduce는 YARN 및 해당 구성 요소와 어떻게 작동합니까?
- YARN의 애플리케이션 워크 플로.
- Spark 란 무엇이며 Hadoop과 Spark의 차이점은 무엇입니까?
=> 여기에서 모든 BigData 자습서를 확인하십시오.