빅 데이터의 MapReduce 소개 가이드

게시 됨: 2022-09-21

MapReduce는 애플리케이션을 생성하는 효과적이고 빠르고 비용 효율적인 방법을 제공합니다.

이 모델은 병렬 처리, 데이터 지역성 등과 같은 고급 개념을 활용하여 프로그래머와 조직에 많은 이점을 제공합니다.

그러나 시장에는 사용할 수 있는 프로그래밍 모델과 프레임워크가 너무 많아서 선택하기가 어렵습니다.

그리고 빅 데이터에 관해서는 아무 것도 선택할 수 없습니다. 많은 양의 데이터를 처리할 수 있는 기술을 선택해야 합니다.

MapReduce는 이에 대한 훌륭한 솔루션입니다.

이 기사에서는 MapReduce가 실제로 무엇이며 어떻게 도움이 될 수 있는지 논의할 것입니다.

시작하자!

맵리듀스란?

MapReduce는 Apache Hadoop 프레임워크 내의 프로그래밍 모델 또는 소프트웨어 프레임워크입니다. 내결함성과 안정성을 갖춘 수천 개의 노드(클러스터 또는 그리드라고 함)에서 대량 데이터를 병렬로 처리할 수 있는 애플리케이션을 만드는 데 사용됩니다.

이 데이터 처리는 데이터가 저장된 데이터베이스 또는 파일 시스템에서 발생합니다. MapReduce는 HDFS(Hadoop File System)와 함께 작동하여 대용량 데이터에 액세스하고 관리할 수 있습니다.

이 프레임워크는 Google에서 2004년에 도입했으며 Apache Hadoop에서 대중화되었습니다. Java, C++, Python 및 Ruby를 포함한 다양한 언어로 개발된 MapReduce 프로그램을 실행하는 Hadoop의 처리 계층 또는 엔진입니다.

클라우드 컴퓨팅에서 MapReduce 프로그램은 병렬로 실행되므로 대규모 데이터 분석에 적합합니다.

압채하둡맵리듀스

MapReduce는 "map" 및 "reduce" 기능을 사용하여 작업을 더 작은 여러 작업으로 분할하는 것을 목표로 합니다. 각 작업을 매핑한 다음 여러 동등한 작업으로 축소하므로 클러스터 네트워크에서 처리 능력과 오버헤드가 줄어듭니다.

예: 손님으로 가득 찬 집에서 식사를 준비한다고 가정합니다. 그래서 모든 요리를 직접 준비하고 모든 과정을 직접 하려고 하면 시간이 많이 걸리고 정신이 없습니다.

그러나 동시에 작업을 수행할 수 있는 다른 사람에게 다른 프로세스를 분배하여 식사 준비를 돕기 위해 친구나 동료(손님이 아님)를 참여시킨다고 가정합니다. 이 경우 손님이 아직 집에 있는 동안 더 빠르고 쉽게 식사를 준비할 수 있습니다.

MapReduce는 주어진 작업을 더 빠르고 쉽게 완료할 수 있도록 분산 작업 및 병렬 처리와 유사한 방식으로 작동합니다.

Apache Hadoop을 통해 프로그래머는 MapReduce를 활용하여 대규모 분산 데이터 세트에서 모델을 실행하고 고급 기계 학습 및 통계 기술을 사용하여 패턴을 찾고 예측하고 상관 관계를 파악하는 등의 작업을 수행할 수 있습니다.

맵리듀스의 특징

MapReduce의 주요 기능은 다음과 같습니다.

  • 사용자 인터페이스: 각 프레임워크 측면에 대한 합리적인 세부 정보를 제공하는 직관적인 사용자 인터페이스를 얻을 수 있습니다. 작업을 원활하게 구성, 적용 및 조정하는 데 도움이 됩니다.
사용자 인터페이스
  • 페이로드: 애플리케이션은 맵 및 리듀스 기능을 활성화하기 위해 매퍼 및 리듀서 인터페이스를 활용합니다. 매퍼는 입력 키-값 쌍을 중간 키-값 쌍으로 매핑합니다. Reducer는 키를 다른 작은 값으로 공유하는 중간 키-값 쌍을 줄이는 데 사용됩니다. 정렬, 셔플 및 축소의 세 가지 기능을 수행합니다.
  • Partitioner: 중간 맵 출력 키의 분할을 제어합니다.
  • 리포터: 진행 상황을 보고하고, 카운터를 업데이트하고, 상태 메시지를 설정하는 기능입니다.
  • Counters: MapReduce 애플리케이션이 정의하는 전역 카운터를 나타냅니다.
  • OutputCollector: 이 함수는 중간 출력 대신 Mapper 또는 Reducer에서 출력 데이터를 수집합니다.
  • RecordWriter: 데이터 출력 또는 키-값 쌍을 출력 파일에 씁니다.
  • DistributedCache: 응용 프로그램에 따라 더 큰 읽기 전용 파일을 효율적으로 배포합니다.
  • 데이터 압축: 애플리케이션 작성자는 작업 출력과 중간 맵 출력을 모두 압축할 수 있습니다.
  • 잘못된 레코드 건너뛰기: 지도 입력을 처리하는 동안 여러 잘못된 레코드를 건너뛸 수 있습니다. 이 기능은 SkipBadRecords 클래스를 통해 제어할 수 있습니다.
  • 디버깅: 사용자 정의 스크립트를 실행하고 디버깅을 활성화하는 옵션이 표시됩니다. MapReduce의 작업이 실패하면 디버그 스크립트를 실행하고 문제를 찾을 수 있습니다.

맵리듀스 아키텍처

건축물

구성 요소를 더 자세히 살펴봄으로써 MapReduce의 아키텍처를 이해해 보겠습니다.

  • 작업: MapReduce의 작업은 MapReduce 클라이언트가 수행하려는 실제 작업입니다. 그것은 최종 작업을 형성하기 위해 결합되는 몇 가지 더 작은 작업으로 구성됩니다.
  • 작업 기록 서버: 작업 실행 전후에 생성된 로그와 같은 애플리케이션 또는 작업에 대한 모든 기록 데이터를 저장하고 저장하는 데몬 프로세스입니다.
  • 클라이언트: 클라이언트(프로그램 또는 API)는 실행 또는 처리를 위해 MapReduce에 작업을 가져옵니다. MapReduce에서 하나 이상의 클라이언트는 처리를 위해 MapReduce Manager에 작업을 지속적으로 보낼 수 있습니다.
  • 맵리듀스 마스터: 맵리듀스 마스터는 작업을 여러 개의 작은 부분으로 나누어 작업이 동시에 진행되도록 합니다.
  • 작업 파트: 하위 작업 또는 작업 파트는 기본 작업을 분할하여 얻습니다. 그것들은 최종 작업을 만들기 위해 작업되고 결합됩니다.
  • 입력 데이터: 작업 처리를 위해 MapReduce에 제공되는 데이터 세트입니다.
  • 출력 데이터: 작업이 처리된 후 얻은 최종 결과입니다.

따라서 이 아키텍처에서 실제로 일어나는 일은 클라이언트가 작업을 더 작고 동일한 부분으로 나누는 MapReduce 마스터에 작업을 제출하는 것입니다. 이렇게 하면 더 작은 작업이 더 큰 작업 대신 처리되는 데 시간이 덜 걸리므로 작업을 더 빠르게 처리할 수 있습니다.

그러나 작업을 너무 작은 작업으로 나누지 않도록 하십시오. 그렇게 하면 분할을 관리하는 더 큰 오버헤드에 직면해야 하고 상당한 시간을 낭비해야 할 수 있기 때문입니다.

다음으로 Map 및 Reduce 작업을 진행하기 위해 작업 부분을 사용할 수 있습니다. 또한 Map 및 Reduce 작업에는 팀이 작업 중인 사용 사례에 따라 적절한 프로그램이 있습니다. 프로그래머는 요구 사항을 충족하기 위해 논리 기반 코드를 개발합니다.

맵리듀스 아키텍처

그런 다음 입력 데이터가 Map Task에 제공되어 Map이 키-값 쌍으로 출력을 빠르게 생성할 수 있습니다. 이 데이터를 HDFS에 저장하는 대신 로컬 디스크를 사용하여 데이터를 저장하여 복제 가능성을 제거합니다.

작업이 완료되면 출력을 버릴 수 있습니다. 따라서 HDFS에 출력을 저장할 때 복제가 과잉이 됩니다. 각 맵 작업의 출력은 리듀스 작업에 공급되고 맵 출력은 리듀스 작업을 실행하는 머신에 제공됩니다.

다음으로 출력은 병합되어 사용자가 정의한 reduce 함수로 전달됩니다. 마지막으로 감소된 출력은 HDFS에 저장됩니다.

또한 프로세스는 최종 목표에 따라 데이터 처리를 위해 여러 Map 및 Reduce 작업을 가질 수 있습니다. Map 및 Reduce 알고리즘은 시간 또는 공간 복잡성을 최소화하도록 최적화되었습니다.

MapReduce는 주로 Map 및 Reduce 작업을 포함하므로 이에 대해 더 많이 이해하는 것이 적절합니다. 따라서 이러한 주제에 대한 명확한 아이디어를 얻기 위해 MapReduce의 단계에 대해 논의해 보겠습니다.

맵리듀스의 단계

지도

입력 데이터는 이 단계에서 출력 또는 키-값 쌍으로 매핑됩니다. 여기서 키는 주소의 id를 참조할 수 있고 값은 해당 주소의 실제 값일 수 있습니다.

지도 단계

이 단계에는 분할과 매핑이라는 두 가지 작업만 있습니다. 분할은 주 작업에서 분할된 하위 부분 또는 작업 부분을 의미합니다. 이를 입력 분할이라고도 합니다. 따라서 입력 분할은 맵에서 사용하는 입력 청크라고 할 수 있습니다.

다음으로 매핑 작업이 발생합니다. map-reduce 프로그램을 실행하는 첫 번째 단계로 간주됩니다. 여기에서 모든 분할에 포함된 데이터는 출력을 처리하고 생성하기 위해 맵 함수에 전달됩니다.

함수 – Map()은 입력 키-값 쌍의 메모리 저장소에서 실행되어 중간 키-값 쌍을 생성합니다. 이 새로운 키-값 쌍은 Reduce() 또는 Reducer 함수에 제공되는 입력으로 작동합니다.

줄이다

매핑 단계에서 얻은 중간 키-값 쌍은 Reduce 함수 또는 Reducer의 입력으로 작동합니다. 매핑 단계와 유사하게 셔플과 리듀스의 두 가지 작업이 관련됩니다.

따라서 얻은 키-값 쌍이 정렬되고 셔플되어 Reducer에 제공됩니다. 다음으로 Reducer는 개발자가 작성한 Reducer 알고리즘을 기반으로 키-값 쌍에 따라 데이터를 그룹화하거나 집계합니다.

여기에서 셔플링 단계의 값을 결합하여 출력 값을 반환합니다. 이 단계에서는 전체 데이터 세트를 요약합니다.

감소 단계

이제 Map 및 Reduce 작업을 실행하는 전체 프로세스는 일부 엔터티에 의해 제어됩니다. 이것들은:

  • Job Tracker: 간단히 말해서 Job Tracker는 제출된 작업을 완전히 실행하는 마스터 역할을 합니다. 작업 추적기는 클러스터의 모든 작업과 리소스를 관리합니다. 또한 작업 추적기는 특정 데이터 노드에서 실행되는 작업 추적기에 추가된 모든 맵을 예약합니다.
  • 다중 작업 추적기: 간단히 말해서 다중 작업 추적기는 작업 추적기의 지시에 따라 작업을 수행하는 슬레이브로 작동합니다. 작업 추적기는 Map 및 Reduce 작업을 실행하는 클러스터의 모든 노드에 별도로 배포됩니다.

작업이 클러스터의 다른 데이터 노드에서 실행되는 여러 작업으로 분할되기 때문에 작동합니다. 작업 추적기는 작업을 예약하고 여러 데이터 노드에서 실행하여 작업을 조정하는 역할을 합니다. 다음으로 각 데이터 노드에 있는 작업 추적기는 작업의 일부를 실행하고 각 작업을 돌봅니다.

또한 작업 추적기는 진행률 보고서를 작업 추적기로 보냅니다. 또한 Task Tracker는 주기적으로 "heartbeat" 신호를 Job Tracker에 보내고 시스템 상태를 알려줍니다. 오류가 발생하면 작업 추적기가 다른 작업 추적기에서 작업 일정을 조정할 수 있습니다.

출력 단계: 이 단계에 도달하면 Reducer에서 최종 키-값 쌍이 생성됩니다. 출력 포맷터를 사용하여 키-값 쌍을 변환하고 레코드 작성기의 도움으로 파일에 쓸 수 있습니다.

맵리듀스를 사용하는 이유

다음은 빅 데이터 애플리케이션에서 MapReduce를 사용해야 하는 이유를 설명하는 몇 가지 이점입니다.

병렬 처리

병렬 처리

모든 노드가 MapReduce에서 이 작업의 일부를 동시에 처리하는 여러 노드로 작업을 나눌 수 있습니다. 따라서 더 큰 작업을 더 작은 작업으로 나누면 복잡성이 줄어듭니다. 또한 여러 작업이 단일 시스템이 아닌 다른 시스템에서 병렬로 실행되기 때문에 데이터를 처리하는 데 걸리는 시간이 훨씬 줄어듭니다.

데이터 지역

MapReduce에서는 처리 장치를 데이터로 이동할 수 있으며 그 반대는 불가능합니다.

전통적인 방식으로 데이터는 처리를 위해 처리 장치로 가져왔습니다. 그러나 데이터의 급속한 증가와 함께 이 프로세스는 많은 문제를 일으키기 시작했습니다. 그 중 일부는 더 높은 비용, 더 많은 시간 소모, 마스터 노드의 부담, 빈번한 장애 및 네트워크 성능 저하였습니다.

그러나 MapReduce는 처리 장치를 데이터로 가져오는 반대 접근 방식을 사용하여 이러한 문제를 극복하는 데 도움이 됩니다. 이런 식으로 데이터는 모든 노드가 저장된 데이터의 일부를 처리할 수 있는 여러 노드에 분산됩니다.

결과적으로 각 노드가 해당 데이터 부분과 병렬로 작동하므로 비용 효율성을 제공하고 처리 시간을 단축합니다. 또한 모든 노드가 이 데이터의 일부를 처리하므로 노드에 과부하가 걸리지 않습니다.

보안

시큐리티 맵리듀스

MapReduce 모델은 더 높은 보안을 제공합니다. 클러스터 보안을 강화하면서 승인되지 않은 데이터로부터 애플리케이션을 보호하는 데 도움이 됩니다.

확장성 및 유연성

MapReduce는 확장성이 뛰어난 프레임워크입니다. 수천 테라바이트의 데이터를 사용하여 여러 시스템에서 애플리케이션을 실행할 수 있습니다. 또한 구조화, 반구조화 또는 구조화되지 않은 모든 형식 또는 크기의 데이터 처리 유연성을 제공합니다.

간단

Java, R, Perl, Python 등과 같은 모든 프로그래밍 언어로 MapReduce 프로그램을 작성할 수 있습니다. 따라서 데이터 처리 요구 사항을 충족시키면서 누구나 쉽게 프로그램을 배우고 작성할 수 있습니다.

맵리듀스의 사용 사례

  • 전체 텍스트 인덱싱: MapReduce는 전체 텍스트 인덱싱을 수행하는 데 사용됩니다. 그것의 매퍼는 단일 문서의 각 단어 또는 구를 매핑할 수 있습니다. 그리고 Reducer는 매핑된 모든 요소를 ​​인덱스에 쓰는 데 사용됩니다.
  • Pagerank 계산: Google은 Pagerank를 계산하기 위해 MapReduce를 사용합니다.
  • 로그 분석: MapReduce는 로그 파일을 분석할 수 있습니다. 매퍼가 액세스된 웹 페이지를 검색하는 동안 대용량 로그 파일을 여러 부분으로 나누거나 분할할 수 있습니다.

로그에서 웹 페이지가 발견되면 키-값 쌍이 감속기에 공급됩니다. 여기서 웹페이지가 키가 되고 인덱스 "1"이 값입니다. Reducer에 키-값 쌍을 제공한 후 다양한 웹 페이지가 집계됩니다. 최종 출력은 각 웹페이지의 전체 조회수입니다.

로그 분석
  • 역 웹 링크 그래프: 프레임워크는 역 웹 링크 그래프에서도 사용법을 찾습니다. 여기에서 Map()은 URL 대상과 소스를 생성하고 소스 또는 웹 페이지에서 입력을 받습니다.

다음으로 Reduce()는 대상 URL과 연결된 각 소스 URL의 목록을 집계합니다. 마지막으로 소스와 대상을 출력합니다.

  • 단어 계산: MapReduce는 주어진 문서에 단어가 몇 번 나타나는지 계산하는 데 사용됩니다.
  • 지구 온난화: 조직, 정부 및 기업은 MapReduce를 사용하여 지구 온난화 문제를 해결할 수 있습니다.

예를 들어 , 지구 온난화로 인한 바다의 온도 상승에 대해 알고 싶을 수 있습니다. 이를 위해 전 세계적으로 수천 개의 데이터를 수집할 수 있습니다. 데이터는 고온, 저온, 위도, 경도, 날짜, 시간 등이 될 수 있습니다. 이것은 여러 맵이 필요하고 MapReduce를 사용하여 출력을 계산하는 작업을 줄입니다.

  • 약물 실험: 전통적으로 데이터 과학자와 수학자들은 질병과 싸울 수 있는 새로운 약물을 만들기 위해 협력했습니다. 알고리즘과 MapReduce의 보급으로 조직의 IT 부서는 Supercomputers, Ph.D.만이 처리했던 문제를 쉽게 해결할 수 있습니다. 과학자 등. 이제 환자 그룹에 대한 약물의 효과를 검사할 수 있습니다.
  • 기타 애플리케이션: MapReduce는 관계형 데이터베이스에 맞지 않는 대규모 데이터도 처리할 수 있습니다. 또한 데이터 과학 도구를 사용하고 이전에는 단일 컴퓨터에서만 가능했던 다양한 분산 데이터 세트에서 실행할 수 있습니다.

MapReduce의 견고함과 단순함의 결과로 군사, 비즈니스, 과학 등에서 응용 프로그램을 찾습니다.

결론

MapReduce는 기술 혁신을 입증할 수 있습니다. 더 빠르고 간단한 프로세스일 뿐만 아니라 비용 효율적이고 시간 소모가 적습니다. 장점과 증가하는 사용량을 감안할 때 산업 및 조직 전반에 걸쳐 더 많이 채택될 가능성이 높습니다.

빅 데이터 및 Hadoop을 배우기 위한 몇 가지 최고의 리소스를 탐색할 수도 있습니다.