본문 바로가기

IT/Spark

RDD 정리

스파크 클러스터

여러 대가 마치 한대의 서버처럼 동작. 네트워크, 장애, 스케쥴링 처리에 대한 복잡함을 스파크가 대신 처리해줌

분산 데이터

RDD(Resilient Distributed Datasets) 분산 데이터 집합, 복구 가능. 클러스터에 흩어져서 저장

RDD의 불변성

복구라는 것이 어딘가에 백업된 데이터를 다시 복제하는 것이 아니라, 데이터를 다시 만들어 내는 방식이다.
RDD 가 불변! 이기 때문에 가능하다. RDD를 만드는 방법(함수) 만 알고 있으면 언제든지 똑같은 데이터를 만들 수 있다.

HDFS

패스~

Job 과 Executor

Job = 스파크가 프로그램을 실행하는 것. 클러스터에서 병렬로 처리되며 이 Job은 Executor 가 실행한다.

드라이버 프로그램

Job 을 실행할 수 있는 메인함수를 가지고 있는 프로그램 자체, 스파크 컨텍스트를 가지고 뭔가를 하는 프로그램!
일반적으로 드라이버 프로그램이 실행되는 곳은 클러스터가 아니다. 별도의 작업용 서버에서 실행된다. 

트랜스포메이션

변환 = 또다른 RDD 를 리턴한다.
액션 = 연산, 원소를 센 결과, RDD를 리턴하지 않는다.

지연 동작과 최적화

모든 트랜스포메이션과 연산들은 가능한 최대한 미뤄놓았다가 실행된다. 명령들이 큐에 쌓여있다가 한방에 처리된다고 보면 될 것 같다.
이렇게 되면 여러개의 연산입력을 분석하여 최적의 수행 방법을 찾아 처리할 수 있기에 효율적이다.

함수 전달

자바에서 주의할 것은 클래스 함수를 RDD에 전달하면 Serializable 구현해야 한다. 그래서 Function<XXX,XXX> 머 이런걸 implements 해야 하는 번거로움이 있다. 그리고 드라이버 프로그램의 inner 클래스로 정의하면 직렬화 문제가 발생해서 조심해야 한다.
또한 어떠한 값을 전달할 때 메서드 내부에서 지역변수로 이용할 수 있는 것들은 그렇게 하는 편이 좋다. 클래스 멤버 변수를 이용하면 직렬화해야 하는 문제가 발생한다.






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

RDD Transformation #1  (0) 2017.12.14
spark docker 에 설치하기(작성중)  (0) 2017.12.11
Practice using the results "jar" in Spark  (0) 2017.11.28
Reading before learning Spark  (0) 2017.11.22
spark develop environment (scala + intellij + sbt)  (0) 2017.11.22