Spark(스파크)란?
스파크는 대규모 데이터 처리 및 분석을 위한 오픈소스 클러스터 컴퓨팅 프레임워크입니다. 스파크는 데이터를 분산 처리하고, 인메모리 방식을 사용하여 효율적이고 빠른 처리 속도를 제공합니다.
등장배경
스파크는 빅데이터 처리를 위한 도구로, Hadoop Ecosystem 내에서 등장했습니다. 이를 이해하기 위해서는 Hadoop의 등장 배경을 먼저 간단하게 살펴보겠습니다.
Apache Hadoop
빅데이터 문제를 해결하기 위해 Hadoop이 등장합니다. Hadoop은 분산 파일 시스템인 HDFS와 분산 데이터 처리 모델인 MapReduce로 구성되어 있으며 Hadoop의 등장으로 빅데이터 문제를 해결할 수 있을 것으로 보였습니다.
그러나 Hadoop의 처리 방식은 Disk I/O 기반으로 동작하여 입출력 작업에 따른 처리 속도 제약이 있었습니다. 디스크에서 데이터를 읽고 쓰는 작업은 상대적으로 느린 속도를 가지며, 이로 인해 대규모 처리에는 적합하지만 실시간 데이터 처리에는 한계가 있었습니다.
Spark 등장
Spark는 Hadoop의 한계를 극복하기 위해 등장하는 기술로, In-Memory 방식으로 데이터 처리를 수행하여 MapReduce의 연산 속도 한계를 극복합니다. 이를 통해 빅데이터 처리 속도와 실시간 데이터 처리에 대한 요구를 효과적으로 충족시킬 수 있습니다.
Spark Application 동작 과정
Spark Application에는 작업을 관리하는 Driver Program과 작업이 실행되는 노드를 관리하는 Cluster Manager가 있으며, 아래 그림과 같이 마스터/슬레이브 구조를 가집니다.

① 사용자가 애플리케이션을 제출
② Driver Program은 사용자가 정의한 main()을 실행하고 SparkContext를 실행합니다.
- SparkContext는 Cluster Manager와 연결
③ Driver Program은 Cluster Manager에게 Executor 실행을 위한 리소스를 요청합니다.
④ Cluster Manager는 Executor를 Worker Node에 할당한 후 실행합니다.
⑤ SparkContext는 작업 내역을 Task 단위로 분할하여 Executor에 전달합니다.
⑥ 각 Executor는 작업을 수행하고, 결과를 저장합니다.
⑦ 작업이 완료되면 Executor는 결과를 Driver로 반환합니다.
⑧ Driver의 main()이 종료되거나 SparkContext.stop()이 호출되면 Executor는 중지되고 사용한 리소스를 Cluster Manager에 반환합니다.
Driver Program
스파크 애플리케이션을 실행하는 메인 프로그램으로 사용자 코드를 포함합니다. 작업을 분할하여 할당하며, 작업의 진행 상황을 모니터링하고 결과를 수집합니다.(작업 조정 및 관리)
Cluster Manager
클러스터 매니저는 스파크 애플리케이션이 실행될 클러스터 자원을 관리하는 시스템입니다. 드라이버 프로그램과 통신하여 클러스터 자원 할당 및 반환 등의 작업을 수행합니다. 주요 클러스터 매니저로 Hadoop Yarn, Apache Mesos, StandAlone 등이 있습니다.
스파크는 Driver Program, Cluster Manager, Worker Node로 구성되어 있으며, 인메모리 연산 분산 처리가 가능하기 때문에 속도가 빨라지게 되었습니다.
Spark Ecosystem
Spark는 클러스터 컴퓨팅을 활용하여 데이터를 분석, 처리, 조작할 수 있도록 도구와 라이브러리를 제공합니다.

Spark SQL
SQL 쿼리를 사용하여 구조화된 데이터를 처리하기 위한 모듈입니다. Spark SQL은 Hive, Avro, Parquet 등 다양한 데이터 소스와 상호 작용할 수 있습니다.
Spark Streaming
실시간 스트리밍 데이터 처리를 위한 모듈입니다. 스트리밍 데이터를 실시간으로 처리하고, Windowing, Sliding windows, Triggering 등 다양한 기능을 제공합니다.
MLlib
분산 머신러닝(Machine Learning) 라이브러리로, 분류, 회귀, 군집화, 추천 시스템 등 다양한 머신러닝 알고리즘을 제공합니다.
GraphX
대규모 그래프 처리를 위한 모듈로, 그래프 알고리즘 및 그래프 처리 작업을 수행할 수 있습니다. 소셜 네트워크 분석, 페이지 랭크 등 그래프 관련 작업에 유용합니다.
이 외에도 다양한 기능과 라이브러리를 제공합니다. 또한 Spark는 다양한 언어로 개발할 수 있으며, Scala, Java, Python, R 등에서 사용할 수 있습니다.
함께 보면 좋은 글
Hadoop이란 무엇인가?
Hadoop이란 무엇인가? Hadoop(High-Availability Distributed Object-Oriented Platform) Hadoop은 대용량 데이터를 처리하기 위한 오픈소스 프레임워크로, 현재 많은 기업과 조직에서 대용량 데이터 처리에 활용되고...
dev-records.tistory.com
'Big Data' 카테고리의 다른 글
Apache Kafka(카프카) 기본개념 (2) | 2023.06.09 |
---|---|
Colab + Spark 활용한 간단한 예제 (0) | 2023.06.05 |
Hadoop YARN이란 무엇인가? (0) | 2023.05.27 |
HDFS와 MapReduce에 대해 (0) | 2023.05.25 |
Hadoop이란 무엇인가? (0) | 2023.05.23 |
댓글