스파크에서 데이터 참조 개념을 구현한 RDD를 이해해야 새로운 컴퓨팅 패러다임을 이해할 수 있다.


결과를 먼저 말하면, RDD를 통해 대규모로 쉽게 데이터를 처리할 수 있게 됐다.


일단 생성되면 변경될 수 없으며, 실패하면 스파크 엔진이 작업을 반복하려고 시도할 것이라는 점에서 RDD는 복원력 있는 방식으로 내결함성을 제공한다.


- 일단 파티션 작업이 생성되면, RDD는 파티션을 통해 클러스터에서 자동적으로 분산된다. RDD는 또한 다른 형태로 빠르고 견고하게 변형될 수 있기 때문에 입력 데이터셋을 가지고 더많은 작업을 할 수 있게 도와준다.

-RDD는 병렬로 덤프될 수 있고, 논리적으로 상호 관련 있거나 계산상 동일한 애플리케이션에서 공유될 수 있다.



입력 RDD와 관련 작업을 하기 위해 스파크 엔진에서는 data pointer(즉 참조)와 input data 자체를 구별하는 경계선이 필요하다.

기본적으로 driver program은 데이터를 보유하지 않지만, cluster의 원격 컴퓨팅 노드에 데이터가 실제로 위치한 데이터 참조는 보유한다.


데이터 처리를 좀더 빠르고 쉽게 하기 위해 스파크는 RDD에서 수행되는 변환(transformation)과 액션(action) 이라는 두 가지 유형의 작업을 지원한다.


transformation: 기존 데이터셋에서 새로운 데이터셋을 생성한다.

action: 원격 컴퓨팅 노드에 입력 데이터셋을 연산한 후 driver program으로 값을 반환한다.




스파크가 지원하는 transformation 연산에는 두 가지 유형이 있다.

- narrow/wide transformation

narrow - : 데이터 혼합이 불필요

wide - : data shuffling의 여러 파티션에서 데이터를 공통 노드로 가져오기 위해 입력 데이터셋을 더 많이 변경해야 한다.


action은 DAG 스타일로서 실행을 트리거해 transformation으로부터 RDD 계산의 최종 결과를 driver program으로 반환한다.

하지만 이 구현된 결과는 사실 데이터 객체의 중간 변환 결과를 포함해 저장 영역에 기록되고 최종 결과를 반환한다.