2023.01.30 MapReduce

차유빈·2023년 1월 30일
0

MapReduce 란?

  • 대용량의 데이터를 안전하고 빠르게 처리하기 위한 방법
  • 한 대 이상의 하드웨어를 활용하는 분산 프로그래밍 모델
  • Hadoop은 HDFS(Hadoop File System)이라는 대규모 분산 파일시스템을 구출하여 탁월한 성능과 안정성을 보여줌
  • 맵리듀스는 대용량 파일에 대한 로그분석, 색인 구축, 검색에 탁월한 능력을 보여줌

MapReduce 동작 원리

MapReduce 특징

  • 맵 리듀스는 데이터를 분산하여 연산하고 다시 합치는 기술
  • 맵과 리듀스 단계로 나누고 맵 단계는 입력과 출력으로 key-value의 형태를 가지고 있음
  • 데이터를 섞어서 병합하고 리듀스 함수를 통해 최종적으로 결과를 제공함
  • 맵과 리듀스는 사용자가 임의로 코딩이 가능한 형태로 제공
  • 분산을 통해 분할된 조각으로 처리한 뒤 다시 모아 휠씬 짧은 시간에 계산을 완료함
  • 분할된 조각이 작으면 작을수록 부하 분산에 더 좋은 효과를 냄
  • 너무 과하게 데이터를 분할할 경우 맵을 생성하기 위한 태스크의 오버헤드가 커지기 때문에 역효과가 날 수 있음

MapReduce 과정


Word Count MapReduce 구현

맵 리듀스 실행

맵 리듀스 예제 1

같은 등급끼리 점수를 더함


맵 리듀스 예제 2


증분 맵리듀스 작업

  • 특정 도규먼트가 계속 증가할때, 매일 맵리듀스를 수정하는 것이 아니라 증가한 만큼의 도규먼트만 맵리듀스를 수행해서 그 결과를 기존 맵리듀스 결과와 병합하는 방식으로 작업하는 것

증분 맵리듀스 예제

사람 한명과 2월달 데이터가 늘어났을 때

1월 데이터 한번 더 + 2월 데이터 넣은 결과

replace(데이터 대체하기)


맵리듀스 함수 개발시 주의 사항

  • Map 함수에서 호출하는 emit() 함수의 두번째 인자와 Reduce 함수의 리턴값은 같은 포맷이여야 함
  • Reduce 함수와 연산 작업은 멱등(Idempotent)이여야 함

Aggregation Framework

빅데이터 추출 방법

  • Aggregation Framework 함수를 이용한 데이터 추출
  • MongoDB의 MapReduce 기능을 이용한 데이터 추출
  • MongoDB와 Hadoop의 Map-Reduce를 연동한 빅 데이터의 추출

Aggregation Framework 함수

  • Aggregation Framework는 데이터 추출에 최적화 되어 만들어진 기능 (v 2.1 지원 )
  • Aggregation은 실행하면 내부적으로 MongoDB의 Map/Reduce를 사용하며 빠른 성능을 보장.
  • 실시간 Aggregation은 SQL의 Group 함수와 유사.
  • MongoDB Map/Reduce를 이용한 JavaScript로 생성
  • JavaScript는 외부 데이터 처리에 제한적이며 MongoDB내의 데이터 만 처리 가능
  • Aggregation Framework 함수
    • $project, $match, $group. $sort, $skip 6개의 연결 연산자로 구성
    • 관계형 데이터베이스의 SELECT, WHERE, GROUP BY, ORDER BY 등과 같은 형태로 문장 작성 가능

Aggregation Framework 사용


5개 데이터 들어옴


Aggregation Framework 예제


Aggregation Methods 비교


MongoDB활용

Python과 MongoDB 연결


Python과 MongoDB CRUD

데이터 조회

데이터 넣기

데이터 수정

데이터 삭제

예제


springBoot로 mongodb 연결

pom.xml에 다운로드 되었는지 확인


postman으로 데이터 확인

profile
chacha's 프로그래밍 공부

0개의 댓글