컴퓨터 클러스터는 여러 컴퓨터의 자원을 모아 하나의 컴퓨터처럼 사용할 수 있게 한다. 하지만 컴퓨터 클러스터를 구성하는 것만으로는 부족하며 클러스터에서 작업을 조율할 수 있는 프레임워크가 필요하다. 스파크가 바로 이런 역할을 한다. 스파크는 클러스터의 데이터 처리 작업을 관리하고 조율한다.
스파크는 드라이버 프로세스와 다수의 익스큐터 프로세스로 구성되어있는데,
드라이버 프로세스의 작업과 관련된 분석, 배포 그리고 스케줄링 역할을 수행하기 때문에 필수적이다. 드라이버 프로세스는 스파크 애플리케이션의 심장과 같은 존재로서 애플리케이션의 수명 주기 동안 관련 정보를 모두 유지합니다.
익스큐터는 드라이버 프로세스가 할당한 작업을 수행합니다.
다양한 언어로 스파크를 사용할 수 있는 이유는 스파크가 기본적으로 두가지 API를 제공하기 때문이다. 하나는 저수준의 비구조적 API이며, 다른 하나는 고수준의 구조적 API이다.
스파크 애플리케이션은 SparkSession이라 불리는 드라이버 프로세스로 제어합니다.
가장 대표적은 구조적 API이다.
테이블의 데이터를 로우와 컬럼으로 단순하게 표현한다.
스프레드 시트와 비슷하다고 생각할 수 있으나, 스프레드 시트는 한 대의 컴퓨터에 있지만 스파크 Dataframe은 수천 대의 컴퓨터에 분산되어 있다.