욱'S 노트

Spark - 개요 및 시작하기 본문

Programming/Spark

Spark - 개요 및 시작하기

devsun 2017. 2. 1. 11:34

Overview


스파크 어플리케이션의 드라이버 프로그램들로 구성된다. 여기서 드라이버 프로그램이란 클러스터상에서 병렬 연산으로 수행되는 사용자 메인 함수를 의미한다.

그리고 스파크는 두가지 주요한 추상화를 제공하는데, RDD(Resillent Distributed DataSet)과 공유 변수(Shared variable)이다.


RDD는 파티션된 클러스터에 병렬 연산으로 수행될 수 있는 켈렉션이다. RDD는 일반적인 스칼라 컬렉션으로부터 만들어질 수 있고, HDFS와 같은 외부 시스템으로부터 만들어질 수도 있다. RDD는 노드 장애에 대해서 자동으로 복구된다.


스파크 타스크는 기본적으로 클러스터상에서 병렬 수행된다. 이에 변수들은 공유될 필요가 있다. 스파크는 두가지 타입의 공유 변수를 제공한다. 첫번째는 broadcast 변수이며, 이것은 모든 노드의 메모리에 캐쉬되어 각 노드에서 사용할 수 있게 된다. 두번째는 accumulators인데 단지 추가 연산만을 제공하며, 카운터나 합계를 위해 사용할 수 있다.


시작하기


이전 시간에 작성했던 예제에 대한 설명을 하겠다.

val conf = new SparkConf().setAppName("Simple Application").setMaster("local")

val sc = new SparkContext(conf)

스파크 프로그램의 시작은 SparkContext 객체를 생성하는 것으로부터 시작한다. SparkContext를 생성하기 위해서는 SparkConf 객체가 필요한데 이 객체는 우리 스파크 어플리케이션에 대한 다양한 정보를 포함한다. 예제에서 setAppName 어플리케이션명을 지정한 것이고, setMaster 스파크 어플리케이션을 실행할 마스터를 지정한 것이다. 일단 학습에서는 원격클러스터에서 수행할 필요가 없으므로, "local"이라는 문자열을 통해 로컬모드로 구동한다. 실제 클러스터에서의 구동은 나중에 알아보도록 하겠다.


sc.stop()

그리고 하나의 JVM에서는 하나의 SparkContext만이 활성화 될 수 있으므로, 위와 같이 stop()이라는 메소드를 통해 작업을 중단해줘야 한다.

'Programming > Spark' 카테고리의 다른 글

Spark - 어플리케이션 서브밋  (1) 2017.03.06
Spark - Stand alone 클러스터  (0) 2017.02.17
Spark - 클러스터 개요  (0) 2017.02.16
Spark - RDD  (0) 2017.02.01
Spark + IntelliJ 프로젝트 구성하기  (0) 2017.02.01
Comments