본문 바로가기
데이터 엔지니어링/Spark

[Udemy / PySpark 로 빅데이터 분석하기 with Python] Spark를 시작하기 앞서

by 까다로운오리 2022. 2. 9.

빅데이터란?


RAM에 따라 0~64GB 규모의 Local컴퓨터에 저장할 수 있는 데이터이다. 그러나 필요한 데이터가 증가하고 32GB 나아가 64GB보다 큰 데이터들을 저장의 필요성이 대두됨에 따라, SQL Database, 분산 시스템이 나타났다.

로컬시스템은 단일 계산 시스템으로 컴퓨터 1대 라고 생각하면 된다.
분산시스템은 네트워크를 통해 연결된 컴퓨터 여러대라 생각하면 된다.

데이터를 저장할 때 특정 용량 이후에는 cpu가 높은 local 시스템으로 확장하는 것 보다 cpu가 낮은 여러 시스템으로 확장하는것이 더 쉽기에 빅데이터를 관리하는 시스템들은 주로 분산시스템 방식을 채택한다.
분산시스템의 장점은 결함 감내 시스템(Fault tolerant system)도 있는데 , 이 시스템 덕분에 하나의 시스템에 장애가 발생하더라도 전체의 네트워크는 계속 작동이 가능하다.


**
결함 감내 시스템
시스템을 구성하는 부품의 일부에서 결함(fault) 또는 고장(failure)이 발생하여도 정상적 혹은 부분적으로 기능을 수행할 수 있는 시스템이다. 출처



Hadoop?

하둡은 매우 큰 파일을 여러 시스템(저장소)에 배포하는 기술이다. HDFS(Hadoop Distribute File System)을 사용한다. 하둡의 장점은 크게 4가지로 나뉠 수 있는데

1. 대용량 데이터 저장
2. 스트리밍 방식
- 속도보단 양에 집중한다.
3. 범용 하드웨어 사용
- 결함 감내 시스템을 사용하기에 특별히 안정성 있는 하드웨어를 사용하지 않아도 된다.
4. 파일 블록으로 저장


4. 파일 블록으로 저장
결함 감내 시스템(Fault tolerant system)을 위해 데이터 블록을 복제한 후 MapReduce를 사용하여 해당 데이터의 계산을 처리한다. HDFS는 기본적으로 128MB 크기의 데이터 블록을 사용하는데 각 블록은 3번 복제된다. 이 블록은 결함이 생긴 데이터의 손실 발생을 막기 위해 존재한다. 또 데이터를 쪼개서 저장하기 때문에 데이터가 128MB보다 커도 저장이 가능하다.

추가 자료 : https://mr-devlife.com/all-about-hdfs-concept/


MapReduce?

A BIG DATA PROCESSING FRAMEWORK BASED ON MAPREDUCE WITH APPLICATION TO INTERNET OF THINGS (2016) 

맵리듀스는 computation task (계산작업)을 분산 파일로 분할하는 방법이다. (HDFS 처럼..)
모든 computation을 map과 reduce 두개의 기능(함수)로 표현한다. (map단계가 끝나야 reduce단계를 수행한다.)
Map : 입력 데이터를 분할하여 여러 머신들이 분산 처리하는 함수
Reduce : 이를 다시 하나의 결과로 합치는 함수

또 Job Tracker과 multipe Task Tracker로 이루어져있는데
Job Tracker는 클러스터의 다른 노드들에게 Map과 Reduce의 task를 할당한다. 즉 Job들을 관리하는 역할을 한다. JobTracker이 멈추면 모든 과정들은 중단된다.
multipe Task Tracker는 task에 cpu와 메모리를 할당하고 작업자 node의 작업을 모니터링한다.


Spark?

빅데이터를 빠르고 쉽게 처리하는데 사용되는 최신 기술 중 하나로 Apache의 오픈 소스이다. MapReduce의 대안으로 쓰이는데 spark는 다양한 형식으로 저장된 데이터를 사용할 수 있다. (Cassandra, AWS S3, HDFS 등등..)
MapReduce는 파일을 HDFS에 저장해야 하지만 Spark는 그럴 필요가 없다. 또 MapReduce보다 100배 빠른 처리 속도를 자랑한다. 이는 맵리듀스는 map하고 reduce 작업 후 대부분의 데이터를 디스크에다가 쓰는데(write) spark는 각 변환 후에 대부분의 데이터를 메모리안에 보관(keep)하는데 사용한다.

spark의 주요 핵심은 RDD와 DAG인데,

그 중 RDD를 핵심 장점을 살펴보면
1. 데이터의 분산 수집
2. 내결함성 -분산되어있는 데이터의 에러를 복구할 수 있는 능력
3. 병렬 작업
4. 많은 데이터 소스를 사용할 수 있는 능력

이다.
RDD에서의 연산은 transformation과 action으로 나뉠 수 있는데
transformation은 새로운 인풋데이터로 데이터 셋을 만드는 연산이고 (강의에서는 "기본적으로 따라야 하는 레시피" 로 비유되었다) action은 계산 후 그 결과를 return 하는 것 이다. 즉 Map과 Reduce의 연산을 수행한다고 보면 된다.

또 DAG를 통해 맵리듀스 단점을 보완하여 성능 향상을 하였다.
Dag (Direct acyclic graph) : Data 파이프라인이고 다수의 task로 구성된다. +)방향성이 있고 루프가 없다.



추가 참고 문서 : https://3months.tistory.com/511

해당 강의: https://www.udemy.com/course/best-pyspark-spark-python/

한글 자막 싱크가.. 좀 자연스럽지가 않다 ㅠ 나만 그렇게 느끼는건가..
모르는것 투성이라 좀 더 열심히 공부해야겠다..!