견고한 데이터 엔지니어링 책을 읽으면서 스파크와 맵리듀스가 대규모 데이터를 효율적으로 처리하기 위해 만들어졌다고 하는데, 둘의 차이를 명확히 알기 위해 기록해두는 용으로 블로그를 작성한다.

공통점으로는,

1. 분산 처리 기반

- Spark, MapReduce는 대규모 데이터를 여러대의 컴퓨터(노드)로 나눠서 동시에 처리한다.

- 클러스터 환경에서 작동하며, 데이터를 효율적으로 나누고 병렬 작업을 수행한다.

 

2. 내결함성을 지니다

- 노드 하나가 고장난다 하더라도, 데이터와 작업을 다른 노드에서 수행할 수 있기에 복구할 수 있는 구조를 가지고 있다.

- MapReduce는 HDFS(Hadoop Distributed File System)를 기반으로, Spark는 RDD(Redsilient Distributed Dataset)으로 이를 구현한다.

 

3. 대량 데이터 처리

- 페타바이트 급의 데이터를 다룰 수 있는 확장성과 안정성을 제공한다.

- 데이터 분석, 집계, 변환 등의 작업에 적합하다.


 

차이점으로는,

 

1. 데이터 처리 방식 

- MapReduce : 데이터를 읽고, 처리하고, 결과를 디스크에 저장한 다음, 다시 읽는 과정을 반복한다 > 이는 디스크 I/O가 많아 속도가 느다는 결과를 초래할 수 있다.

- Spark : 데이터를 메모리(RAM)에 저장해서 연속된 작업을 빠르게 처리한다 > 중간 결과를 디스크가 아닌 메모리에 저장해서 속도가 훨씬 빠르다

 

2. 속도

- MapReduce : 1번의 이유와 같이 중간결과를 디스크에 저장하기 때문에 디스크 의존도가 높아 병목현상이 발생한다.

예를들어, 맵 리듀스는 책에 글을 계속 쓰다가 메모를 하려면 책을 덮고 메모를 하고 다시 책을 펼치는 과정을 거친다.

- Spark : 대부분의 작업을 메모리에서 처리하며 (공식문서에 표기된 것처럼 맵리듀스에 비해) 최대 100배 속도가 빠르다.

예를들어, 스파크는 책을 펼쳐놓고 글을 쓰면서 머릿속(메모리)에 저장하고 메모를 한꺼번에 하기에 효율적인 과정을 거친다.

 

3. 유연성 처리 

- MapReduce : 배치 처리만 가능하며 실시간 처리나 분석 작업은 어렵다.

- Spark : 배치 처리뿐만 아니라 실시간 스트리밍, 머신러닝, 그래프 분석까지 다양한 지원이 가능하다.

 

4. 데이터 저장방식

- MapReduce : HDFS를 기본으로 사용하여 데이터를 디스크에 저장하고 디스크에서 읽는다.

- Spark : 데이터를 메모리에 올려 작업하지만 필요할 경우 HDFS나 S3같은 저장소를 활용하기도 한다.


  맵리듀스(Map reduce) 스파크(Spark)
특징 디스크 기반 방식 램 기반 방식
목적 데이터를 오래 저장하기 위한 장치 컴퓨터가 작업할 때 잠시 저장하는 장치
속도 느림(디스크 I/O 의존)  빠름(메모리 중심)
저장 지속성 컴퓨터를 꺼도 데이터 유지 컴퓨터를 끄면 데이터 사라짐
예시 HDD, SSD DDR4, DDR5(메모리 일종)

 

 

참고사이트 : 

https://spark.apache.org/mllib/

 

MLlib | Apache Spark

Runs everywhere Spark runs on Hadoop, Apache Mesos, Kubernetes, standalone, or in the cloud, against diverse data sources. You can run Spark using its standalone cluster mode, on EC2, on Hadoop YARN, on Mesos, or on Kubernetes. Access data in HDFS, Apache

spark.apache.org

 

반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기