Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
Tags
- kafka
- ubuntu
- amazonlinux
- BigQuery
- hadoop
- Dag
- RAG
- pySpark
- MSA
- Streamlit
- javascript
- jmx-exporter
- Redshift
- vectorDB
- 설치
- 루프백주소
- docker
- milvus
- sparkstreaming
- airflow설치
- Python
- SQL
- aiagent
- dockercompose
- metadabatase
- prometheus
- 오블완
- grafana
- airflow
- spark
Archives
- Today
- Total
데이터 노트
[Spark] Spark 간단 소개 | PySpark 로 빅데이터 분석하기 - 1 본문
PySpark 로 빅데이터 분석하기 with Python 강의를 수강하며 정리한 내용입니다. |
강의 수강 배경
전에 데이터 엔지니어 교육 수강하며 진행한 프로젝트에서, Pyspark를 사용해 보았었는데 기억이 가물 + 좀 더 개념을 정립하고 싶어서 강의를 수강하게 되었다.
강의를 수강하며 나름대로 정리하고 기록하며 내 것으로 만들자.
Big Data
만약 로컬 컴퓨터에 램보다 더 큰 값을 지닌 데이터가 있을 경우, 어떻게 처리해야 할까?
→ 방법 1. sql db를 활용해 스토리지를 램 대신 하드드라이브로 옮기거나
→ 방법 2. 분산 시스템을 활용해 여러 기계와 컴퓨터로 데이터를 분배 ⇒ 여기서 스파크가 활용됨!
로컬 시스템과 분산 시스템의 비교
- 로컬 시스템과 분산 시스템의 비교
- 로컬 시스템
: 단일 컴퓨터. 같은 램과 하드 사용
구동될 수 있는 코어 수가 정보처리 능력이나 스토리지 용량에 따라 제한(한계)가 있음. - 분산 시스템
: 하나의 메인 컴퓨터, 즉 마스터 노드에서 데이터 처리 및 계산을 다른 컴퓨터에 분배
성능이 약한 컴퓨터들 힘을 모아 강력한 단일 컴퓨터보다 더 나은 성능을 발휘할 수 있음 - 4개의 로컬 코어 vs 코어 2개짜리 컴퓨터 3대
: 분산 시스템을 활용하여 연산 과정을 분배해 작동하게 할 수 있는데, 이것이 스파크에서 가장 중요한 포인트.
⇒ 스파크는 네트워크로 연결된 여러 컴퓨터에서 계산할 수 있다. - 스파크는 데이터를 램에 할당하지 못할 때나 단일 기계에 할당하는 것이 불가능해 졌을 때 사용된다.
- 로컬 시스템
- 또한, 분산 시스템은 내고장성이 있다. (fault tolerance)
- 큰 데이터를 처리하는 과정에서 중요한 부분인데, 한 컴퓨터가 고장나도 네트워크를 통해 다른 컴퓨터들은 구동할 수 있으나, 로컬은 고장나면 끝.
⇒ 전형적인 분산 구조 포맷은 하둡!
- 큰 데이터를 처리하는 과정에서 중요한 부분인데, 한 컴퓨터가 고장나도 네트워크를 통해 다른 컴퓨터들은 구동할 수 있으나, 로컬은 고장나면 끝.
하둡
- 한 개의 컴퓨터에 저장이 불가능한 아주 큰 용량의 파일을 분산하여 여러 컴퓨터로 분배하는 게 어려웠음 → 하둡의 탄생 배경
⇒ HDFS 라는 체제를 사용 - HDFS 를 통해 데이터 블록을 복제해 내고장성을 높여, 한 컴퓨터가 고장나도 다른 컴퓨터에 복제된 데이터 블록으로 연산이 가능함.
- HDFS는 MapReduce도 활용하는데, MapReduce가 분산된 데이터가 연산이 될 수 있도록 하는 역할임.
⇒ HDF는 방대한 양의 데이터 셋을 여러 컴퓨터에 분배 → MapReduce는 분산된 데이터 셋 계산을 가능하게 함.

- 네임 노드의 자체 cpu와 램이 있는데, 이 둘은 각각의 cpu와 램을 가진 슬레이브 노드라고 불리는 개체들에게 데이터를 분산하거나 데이터가 처리되는 과정을 관장.
- HDFS는 128메가바이트의 기본값을 지닌 데이터 블록을 사용, 이 각각의 블록들은 위 그림 기준 내고장성을 위해 3번 복제됨.
- 데이터 블록이 작을 수록 병렬처리는 더 많이 이뤄지고 이 과정은 노드의 고장으로 인한 데이터 손실 방지.
MapReduce
- HDFS와 같은 분산된 파일에 연산 작업을 분배하는 방법
- Job Tracker와 Task Tracker로 구성 → 이 트랙커의 개념은 스파크에서도 활용 됨
- Job Tracker는 Task Tracker에게 작업 코드를 보내고 Task Tracker들은 요청된 작업을 cpu와 메모리에 할당 및 감시.
⇒ 이 처리과정에 있어서 분배의 개념을 더 발전시킨 기술 : 스파크!

Spark
- MapReduce의 대안
→ 하둡과 스파크의 연관성 보다는 하둡 '맵리듀스'와 스파크를 연관지어 살펴보기! - 다양한 서식(formats)에 저장된 데이터를 사용할 수 있음 ex)카산드라, AWS S3, HDFS
- 스파크는 MapReduce보다 100배 빠름.
→ MapReduce는 Map과 Reduce 작업이 끝날때마다 디스크에 파일을 기록하지만 스파크는 메모리에 데이터를 기록.
RDD
- Resilient Distributed Dataset (회복성 분산 데이터) → Resilient : 회복력 있는, 탄력 있는
- 스파크 컨텍스트, 스파크 세션으로도 불리는 일종의 드라이버 프로그램이 있고, 클러스터 관리자와 분산된 시스템인 워커 노드로 구성
- 변환되지 않고 지연된 연산을 하며 캐싱 가능하고, 변환과 액션 이라는 두가지 행동이 있음.
- 변환만 있고 액션이 없으면 아무런 결과도 도출되지 않음.
→ 방대한 양의 데이터일수록, 모든 변환 작엄을 연산할 필요는 없기 때문
- 변환만 있고 액션이 없으면 아무런 결과도 도출되지 않음.
- RDD와 DataFrame이라는 개념이 혼재해서 사용되지만 헷갈리지 않기!
- RDD는 물리적으로 정리되는 방법, DataFrame는 작업하는 구문.
- 스파크 코드 구문을 작성하는 부분에서 DF 문법을 차용하는 방식을 점차 많이 사용하고 있는데, 실제로 파일 분배되는 과정이 복구 가능하고 분산 가능한 방식으로 저장되는 RDD로 분류될 수 있기 때문에 차이를 알아두기.
'Data Engineering > Spark' 카테고리의 다른 글
[Spark] Spark 설치 (Databricks 노트북) | PySpark 로 빅데이터 분석하기 - 2 (6) | 2024.09.24 |
---|