본문 바로가기

Data Engineering/Apache Spark

[Spark] Apache Spark에 대해 알아보자 🙋‍♂️

1. Apache Spark란 무엇인가?

 스파크는 인메모리 기반의 통합 컴퓨팅 엔진이며 클러스터 환경에서 데이터를 병렬 처리하는 라이브러리 집합이다. 1) 인메모리 기반이기 때문에 처리 속도가 빠르고 2) 클러스터 환경을 통해 높은 성능, 고가용성, 확장성을 가진다. 3) 프로그래밍 언어로 R, 파이썬, 자바, 스칼라 등을 지원하고 3) 라이브러리인 SPARK SQL, MLIib, GraphX, Streaming 등을 제공한다.

 

www.cazton.com

 

 사진에서와 같이 스파크는 통합이라는 관점을 중시하며 기능의 범위를 컴퓨팅 엔진으로 제한한다. 저장소 역할은 HDFS, AWS S3 등을 지원하며 서로 다른 저장소를 유사하게 볼 수 있도록 사용자 API를 제공한다.

 

 

2. Spark는 어떻게 등장했을까?

2000년대 초에는 발열, 전력소모와 같은 물리적인 한계로 인해 단일 코어의 성능 향상이 한계에 도달했다. 이로 인해 단일 코어의 성능을 높이는 것 보다 코어 수를 늘리는 쪽으로 발전되었고, 시스템의 성능 향상을 위해 스파크와 같은 병렬 처리 기술이 등장하기 시작했다.

 

 

3. Spark의 실행 과정을 알아보자

스파크는 스파크 어플리케이션과 클러스터 매니저로 구성되어 있다. 스파크 어플리케이션은 실제 연산을 수행하며 Yarn, Mesos, Kubernetes등의 클러스터 매니저는 이를 중계하는 역할을 한다.

 

 

3-1. Spark Application의 구조

Spark Application의 구조를 먼저 알아보자. 구조는 마스터/슬레이브 구조를 사용한다.

 

✔ Spark Driver

클러스터 노드 중 하나에서 메인 함수를 실행한다. 스파크 어플리케이션의 정보 유지 관리, 익스큐터 실행 및 분석, 배포, 스케줄링 역할을 한다. 사용자가 실행한 프로그램(Job)을 태스크 단위로 변환시켜서 익스큐터로 전달한다.

 

✔ Spark Executer

스파크 드라이버가 할당한 테스크를 수행하고 결과를 반환한다. 스파크 어플리케이션에는 하나의 드라이버와 여러 개의 익스큐터가 존재하며, 익스큐터는 클러스터 매니저에 의해 어플리케이션에 할당된다(=서로 다른 스파크 어플리케이션간에 데이터 공유는 불가능).

 

3-2. Spark Application의 실행 과정

Spark Application의 실행 과정은 다음과 같다.

  • 사용자가 Spark-summit으로 스파크 어플리케이션을 제출
  • 어플리케이션을 통해 생성된 드라이버는 main()을 실행하여 *SparkContext 생성
  • 드라이버는 클러스터 매니저에게 익스큐터 실행을 위한 리소스 요청
  • SparkContext가 작업 내용을 태스크 단위로 분할하여 익스큐터에 전달
  • 각 익스큐터는 작업을 수행하고 결과 저장

*SparkContext: 클러스터 매니저와 연결되는 객체

 


 

 

스파크 완벽 가이드

오픈소스 클러스터 컴퓨팅 프레임워크인 스파크의 창시자가 쓴 스파크에 대한 종합 안내서입니다. 스파크 사용법부터 배포, 유지 보수하는 방법까지 포괄적으로 익힐 수 있습니다. 스파크 2의

m.hanbit.co.kr