MapReduce에 대한 히치하이커를 위한 안내서

게시 됨: 2018-02-05

빅 데이터 도구 및 기술에 대한 기사를 읽었다면 " MapReduce " 라는 용어를 접한 것을 기억할 것 입니다. Hadoop 아키텍처의 핵심 구성 요소 중 하나이며 Hadoop의 전체 처리 계층을 구성합니다.

이 기사에서 우리는 MapReduce 에 대해 조금 더 깊이 있게 이야기할 것입니다. 그러나 초보자에게 친숙한 방식입니다. 이해의 편의를 위해 기사를 다음과 같이 분류했습니다. MapReduce UpGrad 블로그를 위한 히치하이커를 위한 안내서

  • 소개
  • 핵심 개념
  • 완전한 SWOT 분석

맵리듀스 소개

MapReduce 는 기본적으로 분산 클러스터에서 대규모 데이터 세트를 번개처럼 빠르게 처리할 수 있는 개념입니다. 이것은 Apache 직원들이 처음으로 채택한 Google이 특허를 받은 프로그래밍 모델이며 현재 전체 Hadoop 생태계의 핵심입니다. 그 단순함은 그것을 매우 효과적이고 칭찬할 만하게 만듭니다.

MapReduce 는 일상적인 작업을 관리하기 위해 오랫동안 따라온 매우 간단한 논리를 따릅니다. 많은 자료를 처리해야 할 때 많은 수의 작업자를 고용하면 프로세스 속도가 빨라집니다. 많은 요리사가 국물을 망친다”는 말은 여기에 어울리지 않습니다.).

그러나 이 시점에서 한 가지 질문이 생깁니다. MapReduce 는 거대한 데이터 세트에서만 잘 작동합니까?

이에 대한 대답은 매우 간단합니다. 데이터 세트가 반드시 매우 클 필요는 없습니다 . 그러나 경제적이고 계산적인 이유 때문에 기존 계산에 충분히 큰 큰 데이터 세트가 있는 경우에만 MapReduce 를 작동하도록 하는 것이 좋습니다. MapReduce 가 도입 되기 전과 같이 로컬 시스템 자체에서 작은 데이터 세트를 처리하는 것이 항상 더 좋습니다 . 솔직히 말해서 작은 데이터 덩어리에 MapReduce 를 사용하는 것은 기관총을 사용하여 거미를 죽이려고 하는 것과 매우 비슷하기 때문입니다. 거미는 죽임을 당할 것입니다. 하지만 그럴만한 가치가 있습니까?

MapReduce의 핵심 개념

지금쯤이면 MapReduce가 정확히 무엇인지 알 수 있을 것입니다. 이 섹션에서는 바퀴를 움직이는 핵심 개념인 MapReduce 가 정확히 어떻게 작동하는지에 대해 조금 더 이야기할 것 입니다.

MapReduce UpGrad 블로그를 위한 히치하이커를 위한 안내서
만약 당신이 인생에서 기본적인 수학을 접해본 적이 있다면(당신이 이것을 읽고 있다면 우리는 당신이 그것을 가지고 있기를 바랍니다!), 당신은 "순서쌍"의 개념을 알고 있어야 합니다. 단순히 두 개의 데이터를 (x,y) 형식으로 표현하는 방법입니다. 순서 쌍은 좌표, 분수, 직원 ID 및 기타 유사한 형식의 데이터를 나타내는 데 매우 유용합니다. MapReduce 역시 순서 쌍의 개념에 크게 의존합니다. 기본적으로 모든 데이터는 순서 쌍의 형태로 "매핑"될 수 있으며 당면한 문제 설명에 따라 다양한 방식으로 "축소"될 수 있습니다.

십만 권의 책이 있는 디지털 도서관에 혼자 남겨져 있고 모든 책을 합친 것에서 특정 단어가 나오는 횟수를 찾는 어려운 작업이 주어졌다고 가정해 보겠습니다 .

휴, 어떻게 시작하시겠습니까?

첫 번째 접근 방식은 책 1 – 단어 1에서 책 n – 단어 n까지 모든 단어를 반복 하고 필요한 단어를 만날 때마다 카운터 변수를 계속 증가시키는 프로그램을 작성하는 것입니다. 이것을 상상하는 것만으로도 이 작업을 수행하는 데 걸리는 시간을 알 수 있습니다.

이제 MapReduce 가 작업에 어떻게 응답 하는지 살펴보겠습니다 .

  • 맵리듀스 요구사항:

MapReduce 는 분산 클러스터에서 잘 작동합니다. 분산 클러스터가 무엇입니까?
아주 간단히 말해서, 그것은 단일 작업을 수행하는 네트워크에 짜여진 다수의(종종 수천!) 상용 컴퓨터(저가 컴퓨터)입니다.

이제 그러한 클러스터가 하나 있다고 가정합니다. 문제 설명의 경우 이 클러스터에 대한 입력은 모든 책의 내용이 됩니다. 이 데이터를 시스템에 공급하자마자 클러스터의 모든 컴퓨터(노드)에 복사됩니다(현재 하나의 작업만 처리한다고 가정). 이는 데이터 손실 시 도움이 되도록 내결함성 수준을 제공하기 위해 수행됩니다.

  • MapReduce 프로그래밍

MapReduce 는 Map과 Reduce의 두 단계로 작동 하므로 MapReduce 워크플로를 시작하고 실행하려면 Map()과 Reduce()라는 두 가지 프로그램을 작성해야 합니다 . 이전에는 Java를 사용하여 이러한 프로그램을 작성했지만 이제는 데이터 과학의 급속한 성장으로 인해 MapReduce 프레임워크가 Python 또는 R로 작성된 코드도 처리할 수 있을 정도로 유연해졌습니다.

작성한 스크립트는 차례로, 즉 연속적인 방식으로 실행됩니다. 이것은 MapReduce 패러다임 의 주요 단점 중 하나, 즉 두 스크립트를 동시에 실행할 수 없다는 사실을 알려줍니다. 이를 달성하면 MapReduc 를 훨씬 더 빠르게 만들 수 있으며 이는 광범위한 연구의 주제였습니다.

  • 워크플로 병렬화:

입력(모든 책의 내용)은 다양한 세그먼트(기본적으로 클러스터의 컴퓨터 수와 동일)로 나뉘고 각 컴퓨터에는 특정 세그먼트가 할당됩니다. 파일을 줄을 기준으로 나누었다고 가정하면 노드 1은 줄 1에서 10,000까지 처리하도록 요청받을 수 있고 노드 2는 10,001에서 20,000까지 처리하도록 요청받을 수 있습니다. (이것은 단지 예시적인 수치라는 것을 기억하십시오. 세그먼트는 실제 생활에서 훨씬 더 큽니다)
그러면 각 머신이 Map() 프로그램을 실행합니다.

  • Map() 프로그램:

Map() 프로그램은 MapReduce 에 작업을 제공하기 전에 수행하려는 작업을 정확히 수행합니다 . 즉, 파일을 스캔하고 한 번에 한 단어를 읽는 것입니다. 여기서의 이점은 여러 컴퓨터에서 동시에 실행되므로 매니폴드에 의해 시간이 단축된다는 것입니다. Map() 함수의 출력은 순서쌍입니다. 이 경우, 그것은 단순히 (단어, 개수)가 될 것입니다. 즉, Map() 함수가 단어 "hello"를 만나면(이것이 우리가 찾고 있는 단어라고 가정), 단순히 (hello, 1) 산출. 코드 본문의 다양한 부분이 동시에 작업되고 있기 때문에 데이터 세트의 매핑된 버전을 곧 갖게 될 것입니다! MapReduce 의 단순성을 이해하려면 여기에서 수행되는 작업이 집중적인 계산이 필요하지 않은 상당히 기본적이라는 것을 인식하십시오.

  • 매핑된 결과 섞기:

Map() 함수에서 최종 순서 쌍을 얻으면 결과가 섞입니다. 그것은 단순히 동일한 단어를 가진 (단어, 개수) 쌍이 단일 기계로 전송된다는 것을 의미합니다.
이제 프로그래밍에 대해 잘 알고 있다면 달성할 수 있는 한계가 있음을 알게 될 것입니다. 클러스터에는 말 그대로 수십억 개의 단어와 유한한 수의 컴퓨터만 있습니다. 이 시점에서 셔플 단계는 MapReduce 가 작동하는 데 필수가 아니며 단순히 순서대로 정렬하여 Reduce() 스크립트를 훨씬 빠르게 만듭니다. 지금은 Map 출력을 섞었고 이제 단일 컴퓨터에 순서쌍의 형태로 "hello"라는 단어의 모든 인스턴스가 있다고 가정해 보겠습니다. (hello, n) 여기서 n은 " 안녕하세요”라는 특정 책에서 발생했습니다.

  • 마지막으로 Reduce() 단계:

마지막으로, 우리는 마지막 단계인 Reduce()에 도달했습니다. 전체 워크플로에 주의를 기울였다면 Reduce()가 입력 파일에 각 단어가 나타나는 횟수만 계산할 것이라고 올바르게 추측했을 수 있습니다. 순서 쌍의 두 번째 구성 요소를 추가하기만 하면 됩니다. 예를 들어 모든 책에 "hello"라는 단어가 200번 언급된 경우 이 단계 후에 얻을 수 있는 최종 출력은 - (hello, 200)입니다. 단순히 세고 더하기만 하면 결과에 도달했습니다. 이 모든 것은 여러 대의 컴퓨터를 사용하여 동시에 작동하도록 함으로써 가능했습니다.

맵리듀스 SWOT 분석

MapReduce 패러다임 데이터 과학자의 삶을 더 쉽게 만들었습니다. 이 프레임워크의 강점, 약점, 기회 및 위협이 무엇인지 살펴보겠습니다.

강점 대규모 데이터 세트를 분산 클러스터에서 병렬로 처리하여 초고속으로 처리합니다.
약점 Map() 및 Reduce() 스크립트는 연속적으로 실행됩니다.
읽기/쓰기 작업은 HDFS에서 수행되며 이에 비해 속도가 느립니다.
기회 이전에 폐기된 데이터 집합에서 통찰력을 생성하고 조직에서 생성한 빅 데이터를 처리합니다.
위협 독립형 MapReduce 작업은 분석의 충분한 발전 없이 빅 데이터 산업의 속도를 늦출 수 있습니다.

결론적으로…
이제 MapReduce 의 내부 작동 방식에 익숙해 졌으므로 이것이 결코 새로운 기술이 아님을 알게 될 것입니다. 우리는 매우 오랫동안 선거 결과와 같은 대용량 데이터를 처리하기 위해 유사한 패러다임을 사용해 왔습니다. 지금. 또한 단순하게 유지하는 것의 중요성을 깨닫게 될 것입니다. MapReduce 는 멋진 작업을 전혀 수행하지 않으며 이것이 바로 MapReduce를 매우 강력하게 만드는 이유입니다.

빅 데이터에 대해 더 알고 싶다면 PG 디플로마 빅 데이터 소프트웨어 개발 전문화 프로그램을 확인하세요. 이 프로그램은 실무 전문가를 위해 설계되었으며 7개 이상의 사례 연구 및 프로젝트를 제공하고 14개 프로그래밍 언어 및 도구, 실용적인 실습을 다룹니다. 워크샵, 400시간 이상의 엄격한 학습 및 최고의 기업과의 취업 지원.

세계 최고의 대학에서 온라인으로 소프트웨어 엔지니어링 학위배우십시오 . 이그 제 큐 티브 PG 프로그램, 고급 인증 프로그램 또는 석사 프로그램을 획득하여 경력을 빠르게 추적하십시오.

데이터 주도 기술 혁명을 주도하다

IIT Bangalore의 빅 데이터 고급 인증 프로그램