본문 바로가기
컴퓨터 지식/데이터베이스

[DB] Hadoop 과 Spark 요약정리 / 1️⃣ - 하둡(Hadoop), MapReduce

by 서상혁 2021. 3. 7.

목차

 

 

하둡(Hadoop)

 

하둡이란?

  • 데이터 병렬분산처리를 위한 오픈소스 프레임워크
  • 장점
    • 오픈소스로 라이선스에 대한 비용 부담이 적음
    • 시스템을 중단하지 않고, 장비의 추가가 용이(Scale Out)
    • 일부 장비에 장애가 발생하더라도 전체 시스템 사용성에 영향이 적음(Fault tolerance)
    • 저렴한 구축 비용과 비용대비 빠른 데이터 처리
    • 오프라인 배치 프로세싱에 최적화
  • 단점
    • HDFS에 저장된 데이터를 변경 불가
    • 실시간 데이터 분석 같이 신속하게 처리해야 하는 작업에는 부적합
    • 너무 많은 버전과 부실한 서포트
    • 설정의 어려움

 

MapReduce

  • 하둡 에코시스템을 위한 프로그래밍 패러다임
  • 대용량 데이터와 관련된 코드를 병렬적으로 돌리기 쉽게끔 제공되는 프로그래밍 모델
  • 데이터를 분산(Map) 후 이를 다시 처리하는(Reduce) 과정을 수행한다.

 

왜 Map-Reduce인가??

  • 병렬 프로그래밍에서의 오류는 시스템에 꽤나 치명적인 영향을 줄 수가 있다.
  • 사용자는 윗단은 생각하지 않고 쉽게 사용하게끔.
  • Map 과 Reduce 위주

 

MapReduce 의 용어 정리

  • Job : 클라이언트가 수행하는 일련의 과정, 즉 전체 프로그램을 의미한다.
  • Map : 데이터를 분산하는 과정
  • Reduce : 분산화, Suffle, Sort 를 거친 데이터가 합쳐지는 과정
  • Node : 하둡 체제에서의 하나의 클러스터를 구성하는

 

MapReduce 진행과정

출처 :
https://excelsior-cjh.tistory.com/6
  1. HDFS 데이터가 Input 으로 들어온다.
  1. Split 된 데이터가 map 을 통해 key, value 의 형태로 분할된다. <Map phase>
  1. Suffling 과정, 혹은 Sort 과정을 거친다. <Intermediate phase>
  1. Reducing 과정을 거쳐 key 별로 합쳐진다.
  1. Reducing 과정을 마친 결과는 일반적으로 HDFS 에 파일이 저장된다.

 

MapReduce Architecture

 

출처 :
https://velog.io/@kimdukbae/MapReduce
출처 :
https://www.dezyre.com/article/hadoop-architecture-explained-what-it-is-and-why-it-matters/317
  • JobTracker
    • MapReduce Job 들을 컨트롤하는 일종의 데몬
    • NameNode 에 위치 (NameNode 에 관련된 정보는 뒷 게시글에..)
    • Job들을 스케쥴링, 모니터링
    • 클러스터의 노드들에게 Map과 Reduce Task 를 할당한다.
  • TaskTracker
    • DataNode 에서 실행되는 데몬
    • JobTracker 로 부터 작업을 요청받는다.
    • Map, Reduce Task 를 인스턴스화하고, 작업을 수행한다.
    • 진행상황은 JobTracker에게 전송된다.

 

------------------------------------------------

 

HDFS

  • Hadoop Distributed File System
  • 실시간 처리보다는 배치처리를 위해 설계됨

주요 특징들

  • 블록 단위로 저장
    • 데이터를 블록 단위로 나누어 저장하기 때문에 디스크나 파일 크기와 관계없이 저장이 가능하다.
    • 블록을 여러개 (주로 3개)로 복제해서 저장
  • 블록을 이용한 Fault tolerance
    • 블록에 문제가 생기면 다른 블록을 이용해서 데이터를 복구
  • 읽기 중심
    • 데이터를 여러 번 읽는 것이 목적이고, 파일의 수정을 지원하지는 않는다.

     

아키텍쳐

출처 :
https://data-flair.training/blogs/hadoop-hdfs-architecture/
  • 기본적으로 Master-slave 디자인으로 구성되어있다.
  • Master Node
    • Single NameNode
    • 메타데이터를 관리한다.
  • Slave Node
    • Multiple DataNode
    • 데이터를 저장하는 용도
  • NameNode
    • 메타데이터, 이름, 디렉터리 등을 관리
  • DataNode
    • 데이터 블록들을 제공.

     


참고

 


 

 

728x90

댓글