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