대규모 빅데이터를 저장하고 처리하기 위해 Hadoop이 등장하게 되었지만 시간이 지나면서 성능적으로 아쉬운 부분이 생기게 되었다. 하둡의 이러한 부분을 보완하기 위해 등장한 것이 Apach Spark이며, 이번 시간에는 스파크의 등장 배경과 구조에 대해 알아보도록 하자.
1. Apache Spark의 등장 배경
🧩 < MapReduce 방식 >
디스크로부터 데이터를 읽어온다
→ Map task에서 데이터를 (key, value) 형태로 반환한다
→ Reduce task에서 중복된 key값을 가진 데이터를 제거하고 원하는 데이터를 추출한다
→ 마지막 결과를 다시 디스크에 저장한다
하둡의 맵리듀스(mapReduce)는 디스크에서 작업을 처리하여 디스크 I/O 성능이 좋지 못했다. 하둡의 이러한 문제점을 보완하기 위해 인메모리(In-memory) 연산이 가능한 Spark가 등장하게 되었다.
2. Apache Spark란 무엇일까?
▪️ 대규모 분산처리 엔진(클러스터 구조)
▪️ 데이터를 메모리 내에서 처리하여 디스크 I/O가 발생하는 맵리듀스에 비해 처리 속도가 매우 빠르다.
▪️ 메모리 공간이 데이터를 수용할 수 있어야 가장 최적의 성능을 낼 수 있다.
▪️ Java, Scala, Python 등의 다양한 언어를 지원해서 사용하기 편리하다.
3. MapReduce vs Spark
MapReduce | Spark |
대용량 데이터를 병렬로 처리하는 경우에 적합 | 빠른 속도의 데이터 처리가 필요한 경우에 적합 |
처리 속도가 중요하지 않은 경우에 적합(ex.야간작업) | 그래프 계산, 기계 학습 등에 대한 작업이 필요한 경우에 적합 |
4. Spark Architecture (마스터-슬레이브 구조)
#Driver Program
▪️ SparkContext 객체를 생성하여 클러스터 매니저와 통신을 하는 주체
▪️ 클러스터 자원을 관리하고 전체 애플리케이션 라이프 사이클을 관리한다.
(참고) SparkContext
- 실제 드라이버에서 익스큐터에 Job을 실행하기 위한 엔드포인트로, 주기적으로 heartbeat를 보내서 익스큐터를 실시간으로 추적한다.
#Cluster Manager
▪️ 드라이버와 워커 사이에서 자원(=리소스)를 관리하고 Task를 배치한다.
#Worker Node
▪️ Job이 생성되면 외부 저장소(ex.hdfs)로부터 데이터가 로딩되어 Cache에 분산되어 저장된다.
▪️ 워커에 분산되어 있는 데이터를 처리하기 위해 하나의 Job은 여러개의 Task로 분리된다.
▪️ 이때 노드에서 실제 Task를 실행하는 것을 익스큐터(Executor, yarn의 컨테이너와 유사)라고 한다.
▪️ 참고로, Cache(메모리)에 저장된 데이터 객체를 RDD라고 한다.
5. Spark 데이터 저장 파일 포맷
▪️ csv, json - 텍스트 기반의 데이터 저장 포맷
▪️ parquet - 열 기반의 데이터 저장 포맷으로 데이터를 read 하는 것에 최적화된 방식(write once read many)
▪️ avro - 행 기반의 데이터 저장 포맷으로 데이터를 write 하는 것에 최적화된 방식
처음 Spark 아키텍처를 공부하다보면 생소한 용어들에 어려움을 많이 느낄 수 있다. 나 역시도 스파크 공부를 하며 어려웠던 부분이 많이 있었고, 그래서 최대한 더 자세하게 글을 정리하려고 노력했다. 다음 시간에는 스파크의 RDD에 대해서 더 자세히 배워볼 예정이며 오늘도 많은 사람들에게 도움이 되었으면 좋겠다.
참고 사이트
https://wikidocs.net/26630
https://blog.naver.com/pjt3591oo/222724676035
https://bcho.tistory.com/1387
'[기술공부] > BigData' 카테고리의 다른 글
Apache Spark 자료구조 - DataFrame, DataSet (0) | 2023.11.09 |
---|---|
Apache Spark 자료구조 - RDD (0) | 2023.11.09 |
Hive(하이브)에 대하여 (0) | 2023.08.23 |
Hadoop(하둡)에 대하여 (0) | 2023.08.22 |
HDFS(Hadoop Distributed File System/하둡분산파일시스템)에 대하여 (0) | 2023.08.21 |