[실시간 데이터 처리] 스파크(Spark) vs 맵리듀스(MapReduce) 메모리 기반 처리로 속도와 효율성 극대화

궁금하면 500원·2024년 11월 24일

데이터 저장하기

목록 보기
8/23

스파크(Spark)의 처리 방식

스파크는 메모리 중심의 처리 방식을 채택하고 있어서, 디스크 I/O를 줄이고, 더 빠르게 대용량 데이터를 처리할 수 있는 장점이 있습니다.

스파크는 기본적으로 메모리 기반 분산 처리를 강조하며, 중간 결과를 디스크에 기록하지 않고 메모리에 저장하여 처리합니다.

스파크의 특징

1. 메모리 기반 처리

  • 스파크는 데이터를 디스크에 저장하는 대신, 중간 결과를 메모리에 저장합니다.
    이 방식은 속도를 크게 향상시키며, 여러 번의 읽기/쓰기를 피할 수 있게 해줍니다.

  • 데이터를 메모리에 올려두고 연속적으로 처리하기 때문에, 빠른 처리 속도를 자랑합니다.
    맵리듀스에서 중간 결과를 계속 디스크에 기록하고 다시 읽는 과정을 하지 않기 때문에 훨씬 더 효율적입니다.

2. Resilient Distributed Datasets(RDDs):

  • 스파크의 핵심 개념은 RDD라는 데이터 구조입니다.
    RDD는 불변(immutable)하고 분산된 데이터셋을 나타냅니다.
    RDD는 메모리에서 처리되며, 디스크 I/O 없이 작업을 빠르게 수행할 수 있습니다.

  • RDD는 작업이 실패할 경우에도 중간 데이터를 메모리에 저장하고 복구할 수 있기 때문에 내결함성(fault-tolerance)도 제공합니다.

3.한 번만 읽고 계속 처리

  • 스파크는 데이터를 한 번만 읽고 나서 메모리에 올려놓고, 그 후의 모든 처리는 메모리 내에서 이루어집니다.
    중간 결과를 디스크에 저장하거나 다시 읽는 것이 아니라, 데이터를 한 번만 읽고 메모리에서 바로 처리합니다.

  • 이 덕분에 반복적인 디스크 I/O가 없어지고, 성능이 대폭 향상됩니다.

스파크의 처리 흐름 예시

1. 입력 데이터

  • 대용량 데이터셋을 스파크가 읽습니다.

  • 예를 들어, "data.txt"라는 파일에 수백 GB의 데이터가 있을 때, 이를 한 번 읽어 메모리에
    올립니다.

2. 데이터 처리

  • 메모리에 올려진 데이터를 처리하며, 중간 결과가 메모리 상에 저장됩니다.

  • 여러 작업자(노드)들이 데이터를 메모리에서 바로 처리하므로, 빠른 속도로 데이터를 분석하고 결과를 계산합니다.

3. 최종 결과 저장

  • 최종 결과가 처리되면, 결과를 디스크에 저장하거나 다른 시스템에 전달합니다.
    하지만 중간 결과는 디스크에 기록하지 않습니다.

맵리듀스와 스파크의 차이점 요약

특징맵리듀스(MR)스파크(Spark)
처리 방식디스크 기반 처리메모리 기반 처리
속도상대적으로 느림 (디스크 I/O가 많음)매우 빠름 (메모리 내 처리)
중간 결과 저장디스크에 저장 (파일 시스템에 계속 읽고 쓰기)메모리에 저장 (디스크 I/O 최소화)
내결함성 (fault tolerance)재시작 시 중간 결과를 디스크에서 다시 읽어 처리RDD의 데이터 복구 기능 제공
장점안정적인 처리, 분산 환경에서 확장성빠른 처리 속도, 반복적인 작업에서 뛰어난 성능
단점디스크 I/O로 인한 속도 저하메모리 사용량 증가 (메모리 크기에 한계 있음)

스파크의 장점

1. 속도: 스파크는 데이터를 메모리에서 처리하므로, 대용량 데이터셋을 훨씬 더 빠르게 처리할 수 있습니다.
특히 반복적인 작업에 유리합니다.

2. 효율성: 디스크 I/O를 최소화하고, 데이터를 한 번 읽은 뒤 메모리에서 처리하는 방식이므로 성능 향상에 큰 도움이 됩니다.

3. 유연성: 스파크는 다양한 데이터 처리 작업을 지원하며, 데이터 처리, 머신러닝, 그래프 분석 등 여러 분야에서 활용될 수 있습니다.

결론

맵리듀스는 대규모 데이터를 분산 처리하는 데 유용하지만, 중간 결과를 계속 디스크에 쓰고 읽어야 하는 방식이라 속도 저하가 발생할 수 있습니다.

반면, 스파크는 데이터를 메모리에 올려서 처리하므로 훨씬 빠르고 효율적인 데이터 처리가 가능합니다.

파일 시스템에 계속 읽고 쓰는 것을 피하고 한 번 읽고 메모리에서 처리하는 방식이 성능을 크게 향상시키는 핵심입니다.

따라서 대용량 데이터 처리에서 속도와 효율성을 극대화하려면 스파크 같은 메모리 기반 처리 시스템이 더 적합합니다.

profile
에러가 나도 괜찮아 — 그건 내가 배우고 있다는 증거야.

0개의 댓글