데이터로그😎

분산 병렬 처리 시스템 (MPP, DFS) 본문

Data Engineering

분산 병렬 처리 시스템 (MPP, DFS)

지연v'_'v 2023. 9. 14. 16:14

MPP(Massively Parallel Processing)

MPP

구조 - 각각 다른 Machine & 각각 다른 DB
- 여러개의 컴퓨터
특징 - 대용량 병렬 처리 개념의 등장 → 슈퍼컴퓨터(기상청,..)
- 컴터 한대한대씩 거대한 데이터베이스를 하나씩 담당해서 따로따로 병렬로 처리
처리 순서 1. 중앙 컴퓨터가 명령 내림(Communications Facility)
2. 명령받은 머신들은 데이터를 분할해서 병렬처리한다.
단점 - 비싸다.
- 데이터끼리 조인 필요할때는? 필연적으로 컴터들끼리의 네트워크 통신 필요..
- 한 컴터가 담당하는 데이터가 만약 2.5TB라면…. 이걸 컴터끼리 주고받는게 부담된다. = interconnect → 이를 대체하는 것이 HDFS - 이 때 GFS(Google File System)이 등장.

 

GFS ( Google File System)

  • 구글에서 개발한 분산파일 시스템
  • 데이터를 여러개의 블록으로 분할. 각 블록은 여러개의 복사본을 갖고있어 데이터 안정, 신뢰성 보
  • 저렴 컴터를 여러대 묶어서(cluster) 한대의 컴터가 작동하는 것처럼
  • GFS 논문 토대로 Yahoo Hadoop등장
    • HDFS: 분산 파일 처리 시스템 (여러 컴퓨터에 파일을 분산해서 저장) 
    • map reduce: 데이터 연산, 처리
    • yarn: 리소스 관리, 클러스터 관리

 

DFS (Distributed File System)

특징 - 대용량 병렬 처리 & 저렴 비용
- HDFS는 MPP의 interconnect 레이어를 대체 가능
- DFS 중 제일 유명한 시스템: HDFS(Hadoop Distributed File System)
처리순서 1. 하나의 파일을 여러 디스크에 분할해서 저장
2. Map, Reduce를 통해 빠르게 집계
Map : 데이터 표현
Map(데이터 표현)
Mapping = 데이터를 목적에 맞게 처리가능한 형태로 펼쳐놓는. 분할?
Reduce : 데이터 줄이기
Reduce = 집계에 의한 데이터 감소(이 단계에서 Shuffling&Reducing이 일어남)
      ◦ Shuffling
              ▪ 맵핑된 단어를 키를 기준으로 한 데에 묶는다…?
              ▪ 데이터 섞기. 똑같은 키를 가진 단어들끼리 모아주는 과정. 압축
Map-
reduce 대체
Map-Reduce → 효과적인 비즈니스 어려움 → 대체: HIVE & SPARK HIVE (SQL 사용해서 할 수 있는..)
Hadoop - HDD기반(자기디스크)
SPARK - SSD 기반(램이랑 비슷한 방식으로 돌아감)

 

분산 파일 시스템의 연산 방법 2가지

  파일 (저장) 시스템 연산 (집계) 리소스(클러스터)
관리
hadoop hdfs map-reduce yarn
spark hdfs rdd yarn

1. hadoop의 map-reduce

2. spark RDD (hadoopo의 map-reduce를 spark rdd가 대체한다.)

  Hadoop MapReduce spark RDD
데이터
모델
키-값 쌍으로 구성된 데이터를 처리하는 모델 분산된 메모리 상의 데이터 집합으로 처리하는 모델
내결함성 자체적으로 장애 복구 기능을 가지고 있지 않음 장애 발생 시 데이터의 복구가 가능함(T-A)
데이터
읽기/쓰기
HDFS 또는 다른 분산 파일 시스템과 함께 사용 다양한 데이터 소스와 통합하여 사용
데이터
처리 방식
MapReduce 작업을 수행하여 결과를 얻음 변환(Transform) 및 액션(Action) 단계를 통해 데이터를 처리
연산
유연성
Map과 Reduce 단계에 한정된 연산을 수행 다양한 연산을 지원하고 연산 그래프를 구성하여 복잡한 작업 수행 가능
사용처 Hadoop과 같은 분산 컴퓨팅 시스템에서 주로 사용됨 Apache Spark와 같은 분산 데이터 처리 시스템에서 사용됨

hadoop map-reduce

Cluster of Spark

 

  • Driver Program = Master(SparkContext) = 우리가 배울것 = 우리가 신경써야할 것!
    • Master에서 Task 프로그램 작성(using Python, Java, Scala)
    • 스파크를 다룬다 = Driver Program을 만든다.
    • Master는 일하지 않는다.
    • Master는 프로그램을 worker들에게 network를 통해 전달한다.
  • Cluster Manager = Assistant of Master
    • 스케쥴링 담당(worker 담당)
    • Task를 Worker들에게 분배.
    • Hadoop → yarn
    • AWS → Elastic MR
  • Worker Node
    • 연산을 수
    • 한 CPU 당 하나의 Node server 담당 → 알아서 얘네가 해줌.
  • 마스터에서 만들어놓은 프로그램을 노드에 복붙하면 되는 것임.

판다스 vs spark

판다스 = 넘파이 기반 = cpu 사용 = 로컬에서 스파크 사용하면 판다스보다 느림

병렬처리= CPU 하나가 데이터 병렬 처리

분산처리 = 데이터 쪼개서 쪼끄만 데이터를 CPU 하나가 처리

빅데이터 = zb(zetta byte) ~

'Data Engineering' 카테고리의 다른 글

[Spark] Spark SQL  (0) 2023.09.14
[Spark] Spark RDD  (0) 2023.09.14
[airflow] airflow(ubuntu)-mysql 연결하기?  (0) 2023.09.13
[airflow] airflow 사용하기  (0) 2023.09.11
[ubuntu] 로컬 WSL(ubuntu) - vscode 연결하기  (0) 2023.09.11