데이터로그😎
분산 병렬 처리 시스템 (MPP, DFS) 본문
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와 같은 분산 데이터 처리 시스템에서 사용됨 |
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 |