엔지니어 블로그

[Spark] Spark 개요 본문

Spark

[Spark] Spark 개요

안기용 2025. 2. 25. 10:36

1.Spark란 무엇인가

Spark는 Data Engineering, Science, ML 등의 작업을 수행할 수 있는 Muilti-Language 엔진/프레임워크다. 단일 노드 및 cluster 형태로 대량의 컴퓨팅 자원을 사용할 수 있고, 대량의 데이터에 대해 분산퇸 컴퓨팅 처리를 신뢰성 있게 처리할 수 있다.

2.Spark 주요 기능

Batch/Streaming

단일 모델과 프레임워크로 Batch,Streaming을 통합 개발 할 수 있다.

SQL Analytics

ANSI SQL로 빠른 분산 처리 결과를 얻을 수 있다. 기존의 DW 솔루션보다 빠르게 결과를 얻을 수 있다.

Data Science

petabyte-scale 데이터에 대해 Downsampling 없이도 EDA가 가능하다

ML

ML 알고리즘 학습이 가능하고 로컬에서 작성한 코드가 다수의 클러스터에서 동일하게 동작한다.

Spark 등장 배경

1.MapReduce의 한계 극복

Spark는 RDD와 In-Memory-cache의 활용으로 Hadoop M/R의 한계점을 대부분 해결했고 100배 이상 빠른 성능을 보인다.
M/R의 등장으로 이전에 처리할 수 없던 대용량 데어터의 처리가 가능해졌고 가장 효율적인 모델이라는 것이 Hadoop M/R에서 검증 되었다. 하지만 다양한 한계점이 존재한다.

1. 빈번한 자원의 할당/해제
2. 중간 결과 파일을 외부 스토리지에 저장 -> 외부 스토리지 I/O로 인해 지연시간 부하 증가
3. 과도한 shuffle 문제

이러한 문제들로 인해 데이터 처리보다 부가적인 작업에 소모되는 자원이 너무 많았다. Spark의 등장은 이러한 문제점을 해결하기 위해 개발되었다.

MapReduce가 대용량 데이터 처리의 패러다임을 바꿨다면 Spark는 생산성을 증대시키는 역할을 했다.

2. API로 정형화된 데이터 처리 모델

M/R를 토대로 데이터를 처리하는 과정을 정형화 될 수 있었다. 예를 들어 데이터를 변환하는 것은 map function, 걸러내는 것은 filter function, 재배치는 group by 등의 형식이다.
Spark는 scala 기반의 functional programming의 type 안정성과 완결성을 토대로 데이터 처리 모델을 API로 정형화 시켰다. API를 통해 기존의 데이터 처리 작업을 작성하는 것 보다 코드를 작성하는 것이 쉬워질 뿐 아니라, 코드수준에서 무결성을 보장해서 전체적인 개발 생산성을 높일 수 있었다.

3. Multi Language로 확장성

정적 타입 언어인 Scala,Java 뿐아니라 Python,R 과 같은 언어 또한 Spark API를 이용해 코드를 작성해도 대용량 분산 처리가 가능하다

'Spark' 카테고리의 다른 글

[Spark] Spark Architecture  (0) 2025.02.25