우노
[Spark] Spark와 Hadoop MapReduce의 차이 본문
SPARK(In-Memory 방식)과 Hadoop MapReduce(분산병렬 처리방식)의 차이
Hadoop은 mapreduce 방식으로 데이터를 분산 처리 합니다.
- 여러 곳에 분산 저장된 데이터를 처리 하기 위해 mapreduce 방식으로 데이터를 처리 합니다.
spark 역시 mapreduce 방식의 데이터처리 구조를 지원합니다.
- 즉, spark도 여러 곳에 저장된 데이터를 처리 하기 위해 mapreduce 방식으로 데이터를 처리 할 수 있다는 뜻입니다.
둘의 차이는, 데이터를 메모리에 놓고 하느냐, 디스크에 놓고 하느냐 입니다.
Hadoop은 기본적으로 디스크로부터 map/reduce할 데이터를 불러오고, 처리 결과를 디스크로 씁니다.
- 따라서, 데이터의 읽기/쓰기 속도는 느린 반면, 디스크 용량 만큼의 데이터를 한번에 처리 할 수 있습니다.
반면, spark는 메모리로부터 map/reduce할 데이터를 불러오고, 처리 결과를 메모리로 씁니다.
- 따라서, 데이터의 읽기/쓰기 속도는 빠른 반면, 메모리 용량만큼의 데이터만 한번에 처리 할 수 있습니다.
- 보다 정확히 표현하면, 메모리 용량보다 큰 데이터를 처리 할 때는 처리 이외의 메모리 내 데이터 교체라던가, 작업 과정 저장, 컨텍스트 스위칭 등과 같은 류의 과부하가 걸릴 수도 있는 것입니다.
결론은, spark나 hadoop이나 모두 mapreduce 방식을 지원합니다.
다만, hadoop은 디스크 기반의 mapreduce 인것이고, spark는 메모리 기반의 mapreduce 인것입니다.
메모리가 커버 가능한 만큼의 데이터라면, 메모리 기반이 유리 할 것이고, 메모리 용량 이상의 데이터라면 크면 클수록, 디스크 기반의 유리 할 것입니다.
또한, 메모리 기반이 속도가 장점인만큼, 기계학습이나 마이닝과 같은 반복 작업이 많을 수록 메모리 기반이 유리할 것입니다. (단, 일정 용량 이하의 데이터인 경우에 한합니다.)
'Data > Spark' 카테고리의 다른 글
[Spark] sbt를 사용한 간단한 Jar 파일 빌드 (0) | 2020.07.14 |
---|---|
[Spark] RDD 란? (0) | 2020.07.13 |
[Spark] MPI(Message Passing Interface)란? (0) | 2020.07.12 |
[Spark] Shuffle 이란? (2) | 2020.07.12 |
[Spark] SparkConf, spark-shell, spark-submit, spark-defaults.conf 적용 예 (0) | 2020.07.10 |
Comments