BigData/Spark & Spark Tuning
[Spark] Spark 개요, Spark란 무엇이고 어떤 역할을 하는가? Spark Core, Pandas와 비교
스파이디웹
2022. 1. 26. 11:28
728x90
Spark를 공부하기에 앞서 선행 되면 좋을 법한 것들
1. 하둡과 빅데이터 개념
https://spidyweb.tistory.com/239?category=910416
2. python 언어(+pandas library) 혹은 scala언어
스파크는 여러가지 언어를 지원하지만, scala와 python이 점유율이 높은 언어로, 특히나 데이터처리와 관련된 라이브러리를 풍부하게 지원하는 python은 그 중 대표적인 pandas로 데이터처리를 하는데, pyspark은 이 pandas와 유사한점이 굉장히 많기 때문에 pandas를 알고 있어도 spark를 이해하는데 도움이 된다.
1. Spark란?
아파치 스파크는 통합 컴퓨팅 엔진이며 클러스터 환경에서 데이터를 병렬로 처리하는 라이브러리 집합
한마디로, 오픈 소스 클러스터 컴퓨팅 프레임워크
1-1. Spark의 탄생 배경
- spark는 Hadoop의 MapReduce로 부터 나온 개념(따라서 Hadoop을 이해하면 Spark의 탄생배경을 이해하기쉬움)
- 매번 데이터를 처음부터 읽어야 하는 mapreduce의 문제를 해결하기 위해, lazy-execution 기반의 새로운 엔진의 API를 구현
- Batch application, 대화형 데이터 분석, 비정형 쿼리(ad-hoc query)도 제공 Mllib, Spark Streaming, GraphX,SparkSQL,Dataframe 개발
스파크에서 현재 제공하는 전체 component와 library
1-2. Spark의 역할
- spark는 통합이라는 관점을 중시하면서 기능의 범위를 computing engine으로 제한함
- 기존 Hadoop의 MR엔진을 대체하는 데에 사용되므로 Spark는 Hadoop의 저장소인 HDFS나, 분산 자원관리자인 YARN의 역할을 하지 않음(이론상 MR엔진의 약 100배의 속도)
- 요즘엔 하둡에코시스템이라 하여 HDFS를 대체할 저장소인 AWS S3, Azure Blob, GCP CloudStorage과 같은 클라우드 스토리지가 등장했고, YARN의 역할을 대체할 Mesos, k8s가 등장
spark의 역할과 Spark Core(SparkSQL, Spark Streaming, MLlib, GraphX)
2. Spark의 Core
Spark의 라이브러리는 batch처리부터 해서 그래프 분석, 머신러닝 그리고 스트리밍 등 다양한 작업을 지원함
2-1. SparkSQL + DataFrames
- Spark에서는 낮은 버전에서 나온 RDD라는 low level API가 있는데, SPARK SQL과 Dataframe, Dataset 이 RDD로부터 탄생됨
- RDD를 통해 기존 MapReduce가 해오던 작업을 구현하게 되었고, SparkSQL과 Dataframe를 실행시키면 내부적으로 RDD 연산으로 구현되어 나옴
2-2. Spark Streaming
SparkSQL와 Dataframe 그리고 Dataset은 배치와 스트리밍 처리에서 사용
(배치 -> 스트리밍)(스트리밍 -> 배치)를 손쉽게 작업하게 해줌
2-3. 머신러닝
- Spark ML은 Spark의 머신러닝 라이브러리
- Regression/Classification/Clustering/collaborative filtering 등의 알고리즘을 제공하고 있으며, 아직까지는 딥러닝 기능은 제공되고 있지 않음
- 그 외에 다양한 Featurization과 Pipeline 등도 제공되며 Spark 2.x 버전은 두 개의 라이브러리로 제공되어 사용 할 수 있음
2-4. 고급분석(그래프 처리)
GraphFrames
- GraphFrames는 DataFrame에 기반한 Graph를 제공해주는 Apache Spark를 위한 패키지
- GraphFrames는 Scala, Java 그리고 Python을 위한 High Level API를 제공해주며, GraphX의 기능과
- 더불어 Spark DataFrame의 장점을 취함으로써 확장된 기능(Motifi Finding, DataFrame 기반
- Serialization, 표현력이 높은 Graph Query)들을 제공해 주는 것이 목표
- Graph Frames는 Vertex(예 : 사람)와 Edge(예 : 사람들 간의 관계)로 Graph를 표현
- RDDs보다 Spark DataFrames에 기반
3. pandas vs spark
3-1. pandas란?
Pandas는 쉽고 직관적인 관계형 또는 분류된 데이터로 작업 할 수 있도록 설계된
빠르고 유연하며 표현이 풍부한 데이터 구조를 제공하는 Python 패키지
3-2. pandas 와 spark의 공통점, 차이점
- pandas와 spark는 dataframe이라는 SQL 테이블 또는 Excel 스프레드 시트에서와 같이 이질적으로 유형이 지정된 열이있는 데이블 형식 데이터를 다루게 될 때 아주 적합함
- 대부분의 데이터처리에는 pandas 라이브러리를 통해 해결했었는데, pandas와 spark의 가장 큰 차이는 핸들링하는 데이터의 양의 크기
- pandas는 통상적으로 spark보다 작은 데이터 처리에 대해서는 속도가 빠르다고 하는데, 10GB이상의 파일 처럼 파일의 크기가 커지게 되면, pandas는 메모리용량의 부족으로 인해 성능이 저하됨
pandas | spark | |
공통점 | dataframe을 통해 데이터 처리를 함 | |
차이점 | 적은 양의 데이터 일 때 성능이 좋다 | 큰 양의 데이터일 때 성능이 좋다 |
728x90