본문 바로가기
IT

스파크 실행과 언어 API

by 힁구띠 2022. 9. 7.

1. 개요

스파크 대다수의 코드는 대화형 실행 방식으로 수행할 수 있습니다.

스파크는 스칼라로 구형되어 자바 가상 머신 기반으로 동작하고 사용자는 파이썬, JAVA, 스칼라, R, SQL로 스파크를 사용할 수 있습니다. 그러므로 작업 환경에서 자바를 반드시 설치해야 합니다. 파이썬 API를 사용하려면 파이썬 인터프리터 2.7 버전 이상이 필요합니다. R을 사용하려면 작업 컴퓨터에 R을 설치해야 합니다. 

 

2. 스파크 다운로드하기

1) 로컬 환경

로컬 환경에서는 자바가 설치되어야 있어야 하며 파이썬으로 스파크를 사용하려면 설치된 파이썬 버전을 확인합니다. 스파크 공식 홈페이지 (http://spark.apache.org/dowloads.html)에 접속해 패키지 유형을 Pre-built for hadoop 2.7 and later로 선택하고 Direct Download를 클릭합니다.

 

하둡 클러스터: 스파크는 아파치 하둡 같은 분산 파일 시스템이 없는 로컬 환경에서도 실행할 수 있습니다. 하지만 노트북에 설치된 스파크에서 하둡 클러스터로 접속하고 싶다면 스파크 다운로드 페이지에서 해당 하둡 버전에 맞는 패키지 유형을 선택해 알맞은 스파크 버전을 다운로드하여야 합니다.

 

소스에서 빌드: 아파치 다운로드 페이지에서 소스 패키지를 선택해 다운로드하고 README 파일의 내용에 따라 빌드합니다. 스파크를 다운로드하고 명령행에서 파일의 압축을 풉니다. 받은 파일의 압축을 풀고 압축을 푼 디렉터리로 이동하는 코드 스니펫 모든 UNIX 형태의 명령행에서 실행할 수 있습니다.

 

2) 대화형 콘솔

앞서 소개해드린 것처럼 다양한 언어로 스파크의 대화형 셸을 실행할 수 있습니다.

 

파이썬 콘솔: 파이썬 2.x, 3.x 등 버전이 설치되어야 합니다. 스파크 홈 디렉터리에서 아래 명령어를 실행하여 파이썬 콘솔을 실행할 수 있습니다.

./bin/pyspark

명령어 실행 후 'spark'를 입력하고 엔터를 치면 SparkSession 개체가 출력됩니다.

 

스칼라 콘솔: 스칼라 콘솔을 실행하려면 다음 명령어를 실행합니다.

./bin/spark-shell

명령어 실행 후 spark를 입력하고 엔터를 치면 파이썬과 동일하게 SparkSession 객체가 출력됩니다.

 

SQL 콘솔 실행하기

스파크 SQL를 사용할 수 있는 SQL 콘솔은 아래 명령어로 실행합니다.

./bin/spark-sql

 

3) 클라우드에서 스파크 실행하기

학습용은 데이터브릭스 커뮤니티 판을 사용하면 좋습니다. 데이터브릭스는 스파크를 창시한 버클리 팀이 만든 회사이며 학습용 환경인 무료 커뮤니티 판을 클라우드 서비스로 제공합니다. 데이터브릭스 커뮤니티 판은 쉽고 빠르게 스파크를 실행할 수 있는 환경을 제공합니다.

 

3. 언어 API

스파크 언어 API를 사용하면 다양한 프로그래밍 언어로 스파크 코드를 실행할 수 있습니다. 스파크는 모든 언어제 맞는 몇 가지 핵심 개념을 제공합니다. 이 핵심 개념은 클러스터 머신에서 실행되는 스파크 코드로 변환됩니다. 구조적 API만으로 작성된 코드는 언어제 상관없이 유사한 성능을 보입니다.

 

1) 스칼라

스파크는 스칼라로 개발되었으므로 스칼라가 스파크의 기본 언어입니다. 

 

2) 자바

스파크가 스칼라로 개발되었지만, 스파크 창시자들은 자바를 이용해 스카프 코드를 작성할 수 있도록 했습니다.

 

3) 파이썬

파이썬은 스칼라가 지원하는 거의 모든 구조를 지원합니다.

 

4) SQL

스파크는 ANSI SQL :2004 표준 중 일부를 지원합니다. 데이터 분석가 혹은 비전문가도 SQL를 이용해 스파크의 강력한 빅데이터 처리 능력을 쉽게 사용할 수 있습니다.

 

5) R

스파크에서는 일반적으로 사용하는 두 개의 R 라이브러리가 있습니다. 하나는 스파크 코어에 포함된 SparkR, 다른 하나는 R 커뮤니티 기반 패키지인 sparklyr입니다. 

 

각 언어 API는 앞서 설명한 핵심 개념을 유지하고 있습니다. 사용자는 스파크 코드를 실행하기 위해 SparkSession 객체를 진입점으로 사용할 수 있습니다. 파이썬이나 R로 스파크를 사용할 때는 JVM 코드를 명시적으로 작성하지 않습니다. 스파크는 사용자를 대신해서 파이썬이나 R로 작성한 코드를 Executor의 JVM에서 실행할 수 있는 코드로 변환합니다.

 

4. SparkSession

스파크 애플리케이션은 SprakSession이라는 드라이버 프로세스로 제어합니다. SprakSession 인스턴스는 사용자가 정의한 처리 명령을 클러스터에서 실행합니다. 하나의 SprakSession은 하나의 스파크 애플리케이션에 대응합니다. 스칼라와 파이썬 콘솔을 시작하면 sprak 변수로 SprakSession을 사용할 수 있습니다. 스칼라나 파이썬에서 SprakSession 확인을 위해서는 아래 명령어를 실행합니다.

sprak

스칼라 결과: res0: org.apache.spark.sql.SprakSession = org.apache.spark.sql.SparkSession0...

파이썬 결과: <pyspark.sql.session.SprakSession at 0x7efda4c1ccd0>

 

5. 기본 아키텍처

데이터 처리는 하나의 컴퓨터는 대규모 정보를 연산할 만한 성능과 자원을 탑재하고 있지 않습니다. 설령 연산을 할 수 있다고 하더라도 처리하는데 많은 시간이 소용될 수 있습니다. 컴퓨터 클러스터는 여러 컴퓨터의 자원을 모아 하나의 컴퓨터처럼 사용할 수 있게 만듭니다. 하지만 컴퓨터 클러스터를 구성하는 것만으로는 부족하며 클러스터에서 작업을 조율할 수 있는 프레임워크가 필요합니다. 스파크의 역할을 하는 프레임워크입니다. 스파크는 클러스터의 데이터 처리 작업을 관리하고 컨트롤합니다.

스파크가 연산에 사용할 클러스터는 스파크 스탠드 얼론 클러스터 매니저, 하둡, YARN, 메서드 같은 클러스터 매니저에서 관리합니다. 사용자는 클러스터 매니저 스파크 애플리케이션을 제출합니다. 제출받은 클러스터 매니저는 애플리케이션 실행에 필요한 자원을 할당하며 사용자는 할당받은 자원으로 작업을 처리합니다.

'IT' 카테고리의 다른 글

MySQL 정적 변수와 동적 변수  (0) 2022.09.19
CITUS DB - 기본 개념  (0) 2022.09.19
MySQL 권한 - 1  (0) 2022.09.05
스파크 데이터 구조  (0) 2022.08.26
스파크의 기본 개념 - 1  (0) 2022.07.25

댓글