RDD(Resilient Distributed Datasets) 란?

2023. 2. 24. 00:33Spark

반응형

Apache Spark는 빅 데이터 처리에 일반적으로 사용되는 오픈 소스 분산 컴퓨팅 시스템입니다. Spark의 주요 기능 중 하나는 데이터를 RDD(Resilient Distributed Datasets)라는 더 작은 조각으로 분해하여 분산 방식으로 데이터를 처리하는 기능입니다. RDD는 Spark의 기본 데이터 추상화이며 대량의 데이터를 처리하고 시스템 클러스터 전체에서 병렬 처리를 가능하게 하도록 설계되었습니다.

주요 기능, 이점 및 사용 사례를 포함하여 RDD에 대해 자세히 살펴보겠습니다.

RDD란?

병렬 처리할 수 있는 안정적인 분산 데이터셋으로, Hadoop Distributed File System (HDFS), Amazon S3 등의 데이터 소스에서 생성할 수 있습니다. RDD는 immutable하며, 생성 후에는 변경할 수 없습니다. 그러나 다양한 연산인 map, filter, reduce 등의 작업을 사용하여 새로운 RDD로 변환할 수 있습니다.

RDD는 장애 처리 기능을 갖추고 있습니다. RDD는 라인리지(lineage) 기술을 사용하여 생성에 사용된 변환의 기록을 유지합니다. 따라서 RDD 파티션이 손실되더라도 Spark는 라인리지를 사용하여 손실된 파티션을 다시 생성할 수 있습니다.

RDD의 주요 특징

RDD의 주요 특징에는 다음과 같은 것들이 있습니다.

메모리 내 연산

메모리에 저장되어 빠르게 액세스할 수 있도록 설계되었습니다. 데이터를 메모리에 유지하면, 디스크에서 읽어야 하는 데이터보다 빠르게 데이터를 처리할 수 있습니다.

파티셔닝(Partitioning)

여러 대의 컴퓨터에 걸쳐 분할되어 병렬 처리할 수 있도록 설계되었습니다. 각 파티션은 독립적으로 처리될 수 있으므로, 클러스터 전체에서 효율적인 병렬 처리가 가능합니다.

변환 및 액션 작업(Transformation and Action)

다양한 연산을 사용하여 변환할 수 있습니다. 예를 들어, map, filter, reduce 등의 연산이 있습니다. 이러한 연산은 lazy하게 평가되어 액션 연산이 호출될 때까지 실행되지 않습니다. 액션 연산의 예는 count, collect, save 등이 있습니다.

RDD의 이점

RDD는 다른 데이터 처리 시스템보다 빠르고 효율적인 처리, 분산 처리 및 fault-tolerance의 이점을 제공합니다.

처리 속도가 빠름

데이터를 메모리 내에 저장하므로 디스크에서 데이터를 읽어들이는 다른 시스템보다 더 빠르게 데이터 처리가 가능합니다. 이는 데이터 처리 성능을 대폭 향상시킵니다.

분산 처리

클러스터 내의 다수 머신에서 병렬 처리가 가능합니다. 각 머신에서 데이터를 처리하고, 결과를 취합함으로써 더 빠르게 데이터 처리가 가능합니다. 이는 대용량 데이터 처리에 매우 유용합니다.

RDD의 사용 사례

머신러닝

머신러닝 분야에서 다양한 알고리즘을 병렬 처리할 수 있도록 해줍니다. Spark의 머신러닝 라이브러리인 MLlib은 RDD를 기반으로한 머신러닝 알고리즘을 제공합니다.

ETL 파이프라인

ETL 파이프라인에서 사용됩니다. 데이터를 추출하여 변환하고, 필요한 형식으로 저장하는 등의 처리를 수행할 수 있습니다.

배치 처리

대량의 데이터를 처리하는 배치 처리 작업에 유용합니다. 많은 데이터를 빠르게 처리할 수 있으며, fault-tolerance를 제공하여 처리 중 발생한 문제를 해결할 수 있습니다.

결론

대용량 데이터 처리와 병렬 처리를 위한 분산 데이터 처리 시스템으로 매우 유용합니다. RDD는 메모리 내 처리, 파티셔닝, 변환 및 액션 연산, fault-tolerance 등의 이점을 제공하며, 머신러닝, ETL 파이프라인 및 배치 처리 등 다양한 데이터 처리 작업에서 사용됩니다.

반응형

'Spark' 카테고리의 다른 글

spark.executor.memory 이란?  (0) 2023.03.28