본문 바로가기

데이터처리/spark

[reference] spark - RDD programming

Contents

  • RDD

  • Shared Variables

 

 

RDD

 

모든 Spark 어플리케이션은 사용자의 main 함수를 실행하고 , 다양한 병렬 작업을 실행하는 

driver 프로그램으로 구성된다.

 

RDD 는 Spark 가 제공하는 추상환데 ,

병렬 클러스터의 노드 전체에 걸쳐 분할된 collection of elements 다

 

RDD 는 하둡 파일이스템의 파일 또는 driver 프로그램 안에있는 Scala collection에서 시작하여 생성된다.

User 는 병렬 작업 전체에 걸쳐 재사용 할 수 있도록 RDD를 메모리에 유지하도록 Spark에 요청할 수 있다.

또한 RDD는 노드 장애로부터 자동 복구된다.

 

 

Shared Variables

 

Spark 의 두번째 추상화 기능은 병렬 연산에 사용할 수 있는 Shared Variables(공유 변수) 다

기본적으로 스파크는 서로 다른 노드에서 병렬로 기능을 실행할 때, 기능에 사용된 각각의 변수의 copy를 각 작업에 전송한다. 

가끔 변수는 여러 tasks 그리고 driver program 에 공유 되어야한다.

Spark 는 broadcast 변수와 accumulator 2가지 유형의 공유 변수를 지원한다.

 

broadcast 변수는 모든 노드에서 메모리의 값을 캐싱하는데 사용하고

accumulator는 변수와 카운터 , 합계등 added 만 되는 변수다

 

 

 

 

 

그럼 이제 어떻게 프로그래밍을 하는지 알아보자

여기서는 spark-shell 을 사용한 방법은 패스할 예정이다.

 

 

스파크와 연결

 

Spark 를 사용하려면 먼저 Maven 에 종속성을 추가해야한다.

 

만약 HDFS 클러스터에 접근하려면 HDFS 버전의 하둡 클라이언트를 종속성 추가한다

 

그 다음 import 해서 사용하면 된다.

 

 

스파크 초기화

 

스파크 프로그램이 가장 먼저 해야 할 일은 SparkContext 객체를 만들어서 스파크에게 cluster에 엑세스 하는 방법을 알려주는 것.

SparkContext를 작성하려면 먼저 어플리케이션의 정보가 담겨져있는 SparkCont 객체를 만들어야한다.

 

JVM당 하나의 SparkContext를 활성화 할 수 있다.

 

 

AppName 파라미터는 클러스터 UI 에 표시할 applicaiton name 이고, 

Master 는 Spark, Mesos, Yarn 클러스터 URL 또는 special 로컬 모드에서 실행하는 "local" 이 있다.

클러스터에서 실행할 때는 마스터에 hardcode 하지 않고 spark-submit 으로 어플리케이션을 launch 하는게 좋다.

그러나 로컬 테스트에서는 local 로 쓰고 통과 시켜서 실행 할 수 있다.

 

여기까지 Spark RDD 의 설정을 봤고

이후 데이터 처리 예제는 다음글에서 보도록하자