스파크 Spark

[Spark] Apache Spark란?

sseozytank 2024. 2. 19.

1.Spark 의 등장 배경

 

[빅데이터] 1.하둡(Hadoop)이란? - HDFS, MapReduce, YARN

빅데이터 개념을 마스터하기 위해 시리즈를 작성해보기로 했다. 이번 빅데이터 시리즈 포스팅의 궁극적인 목적은 Hadoop -> Hive -> Spark -> Pyspark까지 마스터 하는 것. 하지만 내 머릿속엔 아무것도

sseozytank.tistory.com

우리는 앞서, 하둡에 대해 이해했다.하둡은 HDFS랑 MapReduce 두가지 핵심 요소를 가지고 있는데 (HDFS에서 데이터를 여러 노드에 분산하여 저장하고 MapReduce는 데이터를 분산 환경에서 처리하는 데 사용) MapReduce는 반복적인 작업에 대한 성능이 떨어지는 문제점을 가지고 있었다. 이를 극복하기 위해 나온 것이 Spark다. 

메모리를 사용하다보니 10~100배 정도의 성능 향상을 보여준다.

 

MapReduce Spark
디스크 기반 처리  메모리 내에서 데이터 처리
각 단계에서 디스크에 중간 결과를 쓰고 읽어오는 방식 중간 결과를 디스크에 쓰지 않고 메모리에 유지
대규모 데이터를 일괄 처리하는 경우나 메모리 사용에 대한 제약이 있는 경우 유리 반복적인 작업이나 대화형 작업 및 실시간 작업에 유리

 

 

2.주요 구성 요소 

 

스파크 코어 

- 스파크의 핵심 엔진, 다양한 프로그래밍 언어를 지원(R,Python, Scala, Java) 하며, 분산 데이터 처리를 담당

R Python Scala Java
SparkR PySPark    

 

 

MLlib 

- Machine Learning Library

- 기계 학습 알고리즘과 유틸리티를 제공하는 머신 러닝 라이브러리  

Streaming

- 실시간 데이터 스트림 처리를 위한 모듈 

- 높은 처리량과 낮은 지연 시간을 가진 스트리밍 데이터를 처리할 수 있음 

SQL

- 구조화된 데이터 처리를 위한 모듈로, SQL를 사용하여 데이터를 처리할 수 있음 

- DataFrame과 Dataset API를 제공하여 구조화된 데이터를 다루고 SQL 쿼리를 실행할 수 있음 

GraphX 

- 그래프 처리를 위한 라이브러리로, 그래프와 관련된 작업을 수행

- 그래프 구조를 사용하여 복잡한 데이터 연결성을 분석하고 처리 

 

 

3.데이터프레임, 데이터셋, 그리고 RDD 

Spark에서 사용하는 Data Structure에는 RDD, Dataset, DataFrame이 있다. 

도입 시기로 보면 RDD가 가장 먼저지만 이해를 위해 제목에서는 RDD를 가장 마지막에 서술했다. 

 

RDD (Spark 1.0 ~ ) 

Resilient Distributed Dataset로 스파크의 기본 데이터 구조로, 대량의 데이터를 요소로 가지는 분산 컬렉션 (Spark는 RDD를 기반으로 한 분산 처리 프레임워크임!) 병렬 처리가 가능하고 장애가 발생한 경우에도 스스로 복구될 수 있는 내성을 가지고 있음. 정도인데 아직 너무 너무 어렵고 이해가안된다. 일단, 스파크의 핵심 개념이자 기반으로, 인메모리 처리가 가능하고 불변성, 탄력성 등의 특징을 가진다고만 이해했다. 

 

스파크와 RDD를 다룬 글인데, 내가 봤던 모든 참고자료 중에 가장 이해하기 쉬우면서 논문을 바탕으로 정확하게 집필되어 있어서 이 부분은 해당 문헌의 원본으로 대체한다. 

 

Spark 의 핵심은 무엇인가? RDD! (RDD paper review)

Spark 의 핵심은 무엇인가? RDD! (RDD paper review) - Download as a PDF or view online for free

www.slideshare.net

 

하지만, RDD의 경우 테이블 조인 효율화 같은 처리를 사용자가 직접 제어해야 했기 때문에 최적화에 어려움이 있었다. 

현재는 dataframe으로 잘 안쓰게 되었음 

 

이를 보완한게 

 

DataFrame (Spark 1.3 ~ ) 

RDD와 같이 DataFrame도 변경할 수 없는 데이터 집합이다만, 데이터가 RDB의 관계형 테이블처럼 칼럼이 존재하기 때문에 대용량 데이터를 좀 더 쉽게 처리 할 수 있다.

 

Dataset (Spark 1.6 ~ ) 

 데이터의 타입체크, 데이터 직렬화를 위한 인코더, 카탈리스트 옵티마이저를 지원하여 데이터 처리 속도를 더욱 증가시킴

 


이렇게 하면 스파크의 기초 개념은 끝이 난다.  사실 쓰면서도 한 1/3만 이해한 것 같다 ㅎㅎㅎㅎㅎ ㅠㅠㅠㅠ

이론만 알려고 하는건 언제나 그렇듯 어렵다. 하둡, 스파크 아직은 대강대강 알겠으면서도 잘 모르겠는..그런 상태다. 

하나씩 실습해보면서 깨닫거나 배우는 부분은 계속해서 추가해나가도록 하겠다! 

 

댓글