MapReduce - 데이터 처리에 더 많은 에너지가 필요할 때

현재 인터넷에서 찾을 수 있는 대부분의 사이트는 나중에 처리와 정보 추출을 위해 어떤 데이터를 수집하고 있다.일반적으로 고객의 행동을 파악하고 로그를 분석하며 더 나은 광고 포지셔닝을 만들거나 가능한 한 UI/UX를 개선하기 위해 노력합니다.그러나 만약 수집한 데이터가 기계가 하루, 1년, 심지어 10년 안에 처리할 수 있는 데이터보다 크다면 어떻게 해야 합니까?이곳이 MapReduce이 작용하는 곳이다.

MapReduce란 무엇입니까?
MapReduce는 컴퓨터 클러스터에서 병렬 분산 알고리즘을 사용하여 빅데이터 세트를 처리하고 생성하는 프로그래밍 예입니다.일반적으로MapReduce 프로그램은 필터와 정렬을 실행하는 맵 방법과 맵 함수의 출력에 대한 요약 작업을 수행하는 Reduce 방법으로 구성됩니다. (본문 뒤에 맵과 Reduce를 더욱 깊이 있게 논의할 것입니다.)MapReduce 배후의 기본 사상은 divide and conquer 방법과 매우 비슷하다.사실상 이 데이터 처리 프레임워크의 관건적인 공헌은 매핑과 축소 기능이 아니라 실행 엔진 최적화를 통해 이루어진 각종 응용 프로그램의 신축성과 용착성이다.

그것은 어떻게 일합니까?

앞에서 말한 바와 같이 MapReduce의 주요 기능은 맵과 Reduce이다.그것들은 하나하나 측정되었다.
Map 함수는 디스크의 입력을 (키, 값) 쌍으로 처리하고 다른 중간(키, 값) 쌍을 출력으로 생성합니다.먼저 입력 데이터를 더 작은 블록으로 분할한 다음, 각 블록을 맵에 분배하여 처리합니다.MapReduce 프레임워크는 입력 데이터와 각 맵퍼 서버에서 사용할 수 있는 메모리 블록에 따라 맵의 수량과 블록 크기를 계산합니다.
Reduce 함수는 입력을 (키, 값) 쌍으로 하고 출력(키, 값) 쌍을 생성합니다.모든 맵이 처리되면 프레임워크는 결과를 씻고 정렬한 다음 복원기에 전달합니다.맵을 계속 처리할 때 복원 프로그램을 시작할 수 없습니다.동일한 키가 있는 모든 맵 출력 값은 키의 값을 모으는 감속기에 지정됩니다.
Mapper와 Reducer는 각각 Map과 Reduce 기능을 실행하는 MapReduce 프레임워크에서 관리하는 서버입니다.이 서버들이 같든 다르든 중요하지 않다.
MapReduce 프레임워크의 작동 원리를 개념적으로 요약하기 위해 맵과 Reduce 함수는 사용자가 제공하며 다음과 같은 연관 유형이 있습니다.
map    (k1, v1)  ->  list(k2, v2)
reduce (k2, list(v2))  ->  list(v2)

기타 MapReduce 프로세스
Map과 Reduce 외에 사용자가 제어할 수도 있고 MapReduce 프레임워크에서 관리할 수도 있는 두 가지 중간 절차가 있습니다.
합병은 선택할 수 있는 과정이다.병합기는 모든 맵 서버에서 단독으로 실행되는 축소기로서, 모든 맵의 데이터를 간소화한 다음에 하류로 전달한다. 처리할 데이터가 비교적 적기 때문에 카드를 씻고 정렬하기 쉽다.일반적으로 감속기 자체는 조합기로 사용할 수 있지만 필요하면 독립된 조합기를 실현할 수도 있다.
섹션은 맵 프로그램이 생성한 (키, 값) 쌍을 다른 그룹 (키, 값) 쌍으로 바꾸어 Reducer에 전송하는 과정입니다.그것은 데이터를 어떻게 특정한 감속기에 보여주고 분배할 것인지를 결정한다.

예.
MapReduce의 예시적인 예로, 우리는 대량의 문서에서 단어의 출현 횟수를 계산하는 문제를 고려할 것이다.MapReduce에서 이 기능을 수행하는 사용자 위조 코드는 다음과 같습니다.
map(String key, String value):
  // key: document name
  // value: document contents
  for each word W in value:
    EmitIntermediate(w, "1");

reduce(String key, List values):
  // key: a word
  // values: a list of counts
  int result = 0;
  for each v in values:
    result += parseInt(v)
  EmitIntermediate(toString(result));
map 함수는 모든 단어에 관련된 출현 횟수를 보냅니다. (이 예에서 "1"만 보냅니다.)reduce 함수는 특정 단어가 보내는 모든 계수를 추가합니다.이 두 함수 구현 외에 사용자는 입력과 출력 파일의 이름과 선택할 수 있는 tunning 파라미터를 포함하는 설정 대상을 지정해야 합니다. 이로써 MapReduce 프레임워크는 데이터 처리를 시작할 수 있습니다.
기타 예
  • 분포식 Grep: 맵 함수가 제공하는 모드와 일치하면 선을 보냅니다.reduce 함수는 제공하는 중간 데이터만 출력으로 복사하는 표지 함수입니다.
  • URL 접근 빈도 계수: 맵 함수가 웹 페이지 요청과 출력을 처리하는 로그(URL, 1).reducer 함수는 각 URL의 모든 값을 더하고 (URL, 총 수) 쌍을 보냅니다.
  • 본고는 MapReduce 프레임워크의 작업 원리를 간략하게 소개하였다.aiflow.ltd에서 최대한 빠르고 효율적인 방식으로 결과를 얻어 가장 많은 데이터를 확보할 수 있도록 최선을 다하겠습니다.더 많은 정보를 원하시면 저희newsletter를 구독하세요.
    참조 자료:
  • https://www.researchgate.net/publication/221399923_An_Architecture_for_Distributed_High_Performance_Video_Processing_in_the_Cloud
  • 예와 설명은 다음과 같습니다. https://static.googleusercontent.com/media/research.google.com/en//archive/mapreduce-osdi04.pdf
  • 좋은 웹페이지 즐겨찾기