하둡 Hdfs 상에 데이터를 저장하고 PySpark로 분석하면서 정확한 시스템 용어나 개념에 대해서 정리해야지 말만하다가 이제라도 공부하고 정리하려고 한다. 다는 모르더라도 기본적인 것은 알고쓰자!
1.하둡(Hdoop)이란 - HDFS, MapReduce?
하둡은 대규모 데이터를 저장하고 처리하는데 사용되는 오픈소스 분산 컴퓨팅 프레임 웤이다. 아파치 소프트웨어 재단에서 개발하고 관리하며, 대용량(large-scalable) 데이터를 여러 대의 컴퓨터 클러스터에서 처리할 수 있도록 설계되어 있다.
여기서 우리가 알고 가야할 핵심적인 개념을 뽑자면 hdfs와 mapreduce이다.
- Hadoop 분산 파일 시스템(Hadoop Distributed File System, HDFS)
HDFS는 대용량 데이터를 여러노드에 분산하여 저장하는 분산파일 시스템이다. 데이터의 안정성 및 가용성을 보장하고 읽고 쓰도록 한다.
일종의 저장소의 역할이라고 생각하면 되는데 현재 모든 데이터 분석가로서 분석을 진행하거나 배치로 파티셔닝해서 매일, 매시간 저장하는 모든 데이터를 클라우드 서버상 HDFS에 저장하고 있다.
- MapReduce(맵 리듀스)
- Map: 입력 데이터를 여러 부분으로 나누고, 각 부분에 대해 중간결과 생성 단계
- Reduce: 중간 결과를 저장하고, 이를 결합 및 집계하여 최종 겨로가 생성 단계
하둡에서 데이터 처리를 위한 프로그래밍 방법론이다. 빅 데이터를 작은 데이터 셋으로 분할하고, 여러 컴퓨터에서 병렬로 처리하는 방식을 사용한다. 현재는 MapReduce의 방식 보다는 Spark의 데이터 처리 방식을 채택하고 있는데 이유는 아래와 같다.
(참고:Apache Spark는 2011년 버클리 대학의 AMPLab에서 개발되어 인메모리 기반의 대규모(large-scale) 데이터 처리를 위한 범용 분산 클러스터 시스템이다. 2014년 정식 출시되어 현재 기준 3.5.0 버전이 출시되었다.)
2.Apache Spark vs MapReduce 특징비교
- | Apache Spark | Hadoop MapReduce |
데이터 처리 속도 | 맵리듀스에 비해 100배이상 빠름 | 전통적인 시스템 방식에 비해 빠름 |
반복처리 | RDD(Resilient Distributed Datasets) | 중간결과 디스크 기록 |
데이터 처리 | 배치, real-time(실시간), iterative(반복) 등 | 배치(batch) |
그래프 | 그래프 계산 API, GraphX | - |
기계학습 | 라이브러리 MLlib | - |
처리위치 | 인메모리(in-memory) | 디스크(disk) |
캐시 | 인메모리 형식으로 데이터를 캐시에 저장해 속도를 높임 |
캐시 메모리 지원 x |
맵리듀스 방식에 비해 Spark가 빠른 비결은 데이터를 디스크에 저장하지 않고 메모리(RAM)에서 처리할 수 있기 때문에 디스크 드라이브보다 처리 속도가 훨씬 빠르다. 즉, 디스크에서 데이터를 읽고 쓰는 과정이 많은 맵리듀스는 디스크 I/O 오버헤드가 발생하며, 데이터 처리 속도가 늦다.
또한, 상대적으로 저수준의 프로그래밍인 맵리듀스에 비하여 Spark는 다양한 라이브러리와 API를 제공한다. 예를들어, ML, 그래프 등.
따라서, 현재 빅데이터 분석 시스템 구성시 데이터 저장소와 컴퓨터 클러스터의 리소스 관리는 Hadoop의 HDFS(분산파일 시스템) 와 YARN을 채택하는 반면에 데이터 처리는 Spark를 이용하는 방식이 많다.
3.reference
https://intellipaat.com/blog/spark-vs-map-reduce/
'Data Engineering > 개념' 카테고리의 다른 글
Parquet vs ORC 데이터 파일 형식 비교하기. (0) | 2023.09.22 |
---|---|
ETL vs ELT 차이 및 장, 단점 (0) | 2023.01.09 |