RDD ?
RDD는 Resilient Distributed Dataset 의 줄임말로 스파크의 기본 데이터 구조이다. Spark 에서 모든 작업은 새로운 RDD를 만들거나, 변형하거나, 연산하는 것 중 하나이다.
Spark 에서는 빠른 맵리듀스 작업을 위해서 RDD를 사용해 처리한다.즉, 하둡에서의 맵리듀스의 단점을 보완하기 때문에 RDD로 대세가 바뀌게 되었다.
하둡에서의 Map Reduce
중간 결과에 대해 데이터 복제, I/O 직렬 수행으로 인해 오버헤드가 발생한다는 문제점이 있다.
RDD라는 아이디어에 따르면, 메모리 내에서 데이터를 공유한다. 네트워크나 디스크에서 작업하는 것보다 메모리에서 작업하게 되면 10배에서 100배정도 더 빠르다. memory 의 내용을 read-only 로 사용하게 한것이 RDD이다. Resillient하다는 것이 불변의 특성이라는 뜻인데, read-only 성격을 가지고 있기 때문이다.
RDD라는 아이디어에 따르면, 메모리 내에서 데이터를 공유한다. 네트워크나 디스크에서 작업하는 것보다 메모리에서 작업하게 되면 10배에서 100배정도 더 빠르다. memory 의 내용을 read-only 로 사용하게 한것이 RDD이다. Resillient하다는 것이 불변의 특성이라는 뜻인데, read-only 성격을 가지고 있기 때문이다.
Read-Only 라는 특성을 가지기 때문에, 새로운 동작을 하기 위해서, 기존의 RDD에서 변형된 새로운 RDD를 생성해서 새로운 RDD를 바탕으로 작업이 진행되어야 할 것이다.
또한 이렇게 RDD 1 -> RDD 2 → RDD 3 계보가 생기게 될텐데 이를 Lineage라고 한다. RDD Lineage는 DAG(Directed Acyclic Graph) 자료구조 형태로 생성된다.
노드와 노드간에 방향성을 가지게 되어 의존성을 갖게 된다. 따라서 DAG에 의해, 어떠한 부분의 메모리가 손상되었을 경우 이전의 DAG에서 다시 복구할 수 있다. 그러므로 Spark RDD Fault-Tolerant 한 특징을 가지게 된다. 이는 장애가 발생하더라도 다시 대체 수행하여 서비스 중단이 없도록 하는 특징이다.
'Data Engineering > Apache Spark' 카테고리의 다른 글
[Spark] 스파크 완벽 가이드 Ch09. 데이터 소스 (0) | 2023.11.27 |
---|---|
[Spark] 스파크 완벽 가이드 04 - Ch 04. 구조적 API 개요 (0) | 2023.11.07 |
[Spark] 스파크 완벽 가이드 (3) - Ch.03 스파크 기능 둘러보기 (Dataset, Structured Streaming) (0) | 2023.11.02 |
[Spark] 스파크 완벽 가이드 (2) - Ch 02. 스파크 간단히 살펴보기 (1) | 2023.10.29 |
[Spark] 스파크 완벽 가이드 (1) - Ch 01. 아파치 스파크란 (0) | 2023.10.29 |