[Hadoop] MapReduce 프로그래밍이란?

2024. 11. 28. 16:03·Minding's Programming/Spark
728x90
반응형

MapReduce 프로그래밍의 특징

MapReduce 프로그래밍은 기본적으로 빅 데이터 처리를 위해 만들어졌기 때문에, 일반 데이터 처리와는 다른 특징이 있다. 큰 특징은 아래와 같다.

  • 데이터 셋은 Key, Value의 집합이며 변경 불가(immutable) - 포맷은 하나로 고정
  • 데이터 조작은 map과 reduce 2개의 오퍼레이션으로만 가능
    • 이 2개의 오퍼레이션은 항상 하나의 쌍으로 연속 실행
    • 이 두 오퍼레이션 코드를 개발자가 채워야 함
  • MapReduce 시스템이 Map의 결과를 Reduce단으로 모아줌
    • 위 단계를 셔플링이라고 부르며, Network단을 통한 데이터 이동이 발생
    • Map의 결과 중 key가 같은 것을 모아주고 Reduce로 보냄

 

Map과 Reduce

Map: (k, v) --> [(k', v')*]

  • 입력은 시스템에 의해 주어지며, 입력으로 지정된 HDFS 파일에서 넘어옴
  • key, value 페어를 새로운 key, value 페어 리스트로 변환한다.
  • 출력: 입력과 동일한 key, value 페어를 출력하거나, 출력이 없어도 됨

Reduce: (k', [v1', v2', v3', v4' ...]) --> (k", v")

  • 입력은 시스템에 의해 주어지는데, Map의 출력 중 같은 key를 갖는 key, value 페어를 시스템이 묶어 입력
  • key, value 리스트를 새로운 key, value 페어로 변환
  • SQL의 GROUP BY와 흡사한 모습
  • 출력이 HDFS에 저장됨

예시: WordCount

MapReduce로 단어를 세는 프로그램을 작동시켜본다고 가정하면, 위와 같은 흐름으로 나타난다.

  1. 3개의 문장이 input으로 주어진다.
  2. 각 문장 별로 단어를 나누어, mapping을 통해 단어 수를 센다
  3. 같은 key를 가진 단어를 그룹으로 묶는다.
  4. 같은 key를 가진 단어의 그룹을 Reducing하여, Input의 모든 문장에서 해당 단어가 나온 횟수를 표시한다.
  5. 결과값을 출력한다.

 

728x90

'Minding's Programming > Spark' 카테고리의 다른 글

[Spark/Hive] Spark에서 Hive 메타 스토어 사용하기  (0) 2024.12.02
[Spark/pySpark] SparkSQL UDF(User Define Function)  (0) 2024.12.02
[Spark] Spark의 개념, 구조, 프로그램 실행 옵션  (2) 2024.11.28
[Hadoop] 하둡의 분산처리 시스템, YARN 개념 정리  (0) 2024.11.28
'Minding's Programming/Spark' 카테고리의 다른 글
  • [Spark/Hive] Spark에서 Hive 메타 스토어 사용하기
  • [Spark/pySpark] SparkSQL UDF(User Define Function)
  • [Spark] Spark의 개념, 구조, 프로그램 실행 옵션
  • [Hadoop] 하둡의 분산처리 시스템, YARN 개념 정리
Minding
Minding
  • Minding
    Today's Minding
    Minding
  • 전체
    오늘
    어제
    • 울고넘는 딥러닝 (278)
      • Minding's Baseball (57)
        • MLB Statcast (29)
        • 머신러닝으로 홈런왕 예측하기 (3)
        • 야구칼럼 (12)
        • 야구 규칙, 용어 (1)
        • 2022-23 질롱 코리아 (8)
        • 류현진 등판경기 (4)
      • Minding's Programming (185)
        • 프로그래머스 코딩테스트 (21)
        • Knowledge (44)
        • Numpy & Pandas (6)
        • Excel (3)
        • Git (1)
        • Pygame (11)
        • CV (3)
        • Tensorflow tutorial (4)
        • Kaggle and Dacon (4)
        • 에러 코드 (8)
        • FastAPI (8)
        • Airflow (29)
        • Crawling (6)
        • Django (14)
        • AWS (18)
        • Spark (5)
      • Minding's Reading (30)
        • 머신러닝 딥러닝에 필요한 기초 수학 with 파이.. (2)
        • 칼만필터는 어렵지 않아 (11)
        • 밑바닥부터 시작하는 딥러닝 (6)
        • 메이저리그 야구 통계학 2e (8)
        • 논문읽기 (2)
        • 빅데이터를 지탱하는 기술 (1)
      • Minding's Life (5)
        • 주식 (4)
        • 각종 소식 (1)
  • 블로그 메뉴

    • 홈
    • Baseball
    • Programming
    • Reading
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    질롱코리아
    야구
    칼만필터
    게임개발
    코딩테스트
    파이썬
    에어플로우
    Python
    프로그래머스
    mlb stats api
    Airflow
    KalmanFilter
    칼만필터는어렵지않아
    FastAPI
    칼만필터는어렵지않아파이썬
    파이게임
    메이저리그
    django python
    데이터 엔지니어
    KBO
    AWS
    django
    pygame
    파이썬게임개발
    넘파이
    딥러닝
    데이터분석
    MLB
    머신러닝
    칼만필터는어렵지않아python
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
Minding
[Hadoop] MapReduce 프로그래밍이란?
상단으로

티스토리툴바