하둡 (Hadoop)과 Spark 개념 정리
빅데이터 정의
빅데이터 정의
- 빅데이터란 거대한 규모(Volume), 빠른 속도(Velocity), 높은 다양성(Variety)을 특징으로 하는 데이터 (3V)
- 빅데이터는 새로운 데이터 소스에서 나온 더 크고 복잡한 데이터셋
- 서버 한대로 처리할 수 없는 규모의 데이터
- 기존의 소프트웨어로는 처리할 수 없는 데이터
양 : Volume
- 빅데이터를 사용하면 비정형 데이터를 대량으로 처리해야 함
- 데이터의 크기는 테라바이트(TB)를 넘어 페타바이트(PB)가 될 수 있음
속도 : Velocity
- 속도는 데이터가 얼마나 빠르게 수신 및 처리되는가를 나타냄
- 일반적으로 데이터를 디스크에 기록하는 것보다 메모리로 직접 스트리밍 할 때 속도가 빠름
종류 : Variety
- 사용 가능한 데이터의 유형 수를 나타냄
- 기존 데이터 유형은 구조화되어 있지만, 빅데이터의 등장으로 새로운 비정형 데이터가 탄생
- 텍스트, 오디오 및 비디오와 같은 비정형 / 반정형 데이터는 추가로 전처리가 필요
빅데이터 처리 특징
빅데이터를 처리하기 위해서는 다수의 컴퓨터로 구성된 프레임워크가 필요하다.
스토리지
- 큰 데이터를 손실 없이 보관할 방법이 필요
- 큰 데이터 저장이 가능한 분산 파일 시스템이 필요
병렬 처리
- 처리 시간이 오래 걸림
- 병렬 처리가 가능한 분산 컴퓨팅 시스템이 필요
SQL만으로는 부족
- 비구조화된 데이터일 가능성이 높음, 예) 웹 로그
- 비구조화 데이터를 처리할 방법이 필요
대용량 분산 시스템 정의
분산 환경 기반 (1대 이상의 서버)
- 분산 파일 시스템과 분산 컴퓨팅 시스템이 필요
- HDFS : 하둡에서의 분산 파일 시스템
- MapReduce, YARN : 하둡에서의 분산 컴퓨팅 시스템
Fault Tolerance
- Fault Tolerance : 일부 결함 혹은 고장이 발생해도 부분적으로 기능을 수행할 수 있는 시스템
- 대용량 분산 시스템에서 소수의 서버가 고장 나도 정상적으로 동작해야 함
확장 용이
- Scale Out : 서버의 사양을 올리는 것이 아닌 서버 개수를 추가하는 방식
- 대용량 분산 시스템에서 Scale Out이 용이해야 함
하둡 (Hadoop)
하둡 정의
- 다수의 노드로 구성된 클러스터 시스템
- 노드 : 대형 네트워크 상에서는 장치나 데이터 지점을 의미
- 마치 거대한 컴퓨터처럼 동작
- 다수의 컴퓨터가 복잡한 소프트웨어로 통제됨
하둡 1.0
- HDFS 위에 MapReduce라는 분산 컴퓨팅 시스템이 실행되는 구조
- MapReduce 위에서 다양한 컴퓨팅 언어가 만들어짐 (Presto, Hive)
하둡 2.0
- 하둡 1.0과 비교해 아키텍처가 크게 변경
- 하둡은 YARN이란 이름의 분산처리 시스템 위에서 동작하는 애플리케이션이 됨
- Spark는 YARN 위의 애플리케이션으로 실행
하둡 3.0
- YARN 2.0 사용
- Application 용도에 따라 YARN 자원 관리 가능
- 타임라인 서버에서 HBase를 기본 스토리지로 사용 (하둡 2.1 이후)
- 파일 시스템
- 다수의 Standby 네임노드 지원 (원래는 하나만 지원)
- HDFS, S3, Azure Storage 이외에 Azure Data Lake Storage 등을 지원
맵리듀스 (MapReduce) 프로그래밍
맵리듀스 프로그래밍의 특징
- 기본적으로 큰 데이터를 처리하는 것이 목표
- 데이터 셋은 Key, Valye의 집합이며 변경 불가
- 데이터 조작은 map과 reduce 두 개의 오퍼레이션으로만 가능
- 두 오퍼레이션은 항상 하나의 쌍으로 연속으로 실행
- 오퍼레이션의 코드는 개발자가 채움
- 맵리듀스 시스템이 map의 결과를 reduce 단으로 모아줌 (셔플링)
맵리듀스 프로그래밍의 문제점
- 낮은 생산성
- 프로그래밍 모델이 가진 융통성 부족 : Map과 Reduce, 두 가지 오퍼레이션만 지원
- 튜닝 / 최적화가 쉽지 않음, 예) Data Skew (치우짐)
- 배치작업 중심
- 기본적으로 Low Latency(지연시간)가 아닌 Throughput(처리 양)에 초점을 맞춤
문제점에 따른 대안의 등장
- 범용적인 대용량 처리 프레임워크 등장 : YARN, Spark 등
- SQL의 컴백
- Hive : MapReduce 위에 구현, Throughput에 초점, 대용량 ETL에 적합
- Presto : Low Latency에 초점, 메모리를 주로 사용하며 Adhoc 쿼리에 적합
- 시간이 지나며 Hive와 Presto의 단점이 보완되어 서로 비슷하게 발전
Spark
Spark 3.0의 개념과 구성 요소
- 하둡의 뒤를 잇는 2세대 빅데이터 기술로 YARN, k8s 등을 분산 환경으로 사용
- 구성 요소 : Spark Core, Spark SQL, Spark ML, Spark Streaming, Spark Graph
Spark & MapReduce 비교
- 메모리 or 디스크
- Spark : 기본적으로 메모리 기반이고, 메모리가 부족해지면 디스크 사용
- MapReduce : 디스크 기반
- 분산 컴퓨팅 환경
- Spark : 다른 분산 컴퓨팅 환경 지원 (k8s 등)
- MapReduce : 하둡 (YARN) 위에서만 동작
- 데이터 구조
- Spark : pandas dataframe과 개념적으로 동일한 데이터 구조 지원
- MapReduce : key, value 기반 데이터 구조만 지원
- 컴퓨팅 방식
- Spark : 배치 데이터 처리, 스트림 데이터 처리, SQL, 머신러닝 등 다양한 방식의 컴퓨팅 지원
- MapReduce : 배치 데이터 처리만 지원
Reference
https://ko.wikipedia.org/wiki/%EB%85%B8%EB%93%9C_(%EC%BB%B4%ED%93%A8%ED%84%B0_%EA%B3%BC%ED%95%99)
https://ko.wikipedia.org/wiki/%EC%9E%A5%EC%95%A0_%ED%97%88%EC%9A%A9_%EC%8B%9C%EC%8A%A4%ED%85%9C
'Data Engineering > 빅데이터' 카테고리의 다른 글
[빅데이터] csv vs parquet vs avro vs orc (2) | 2024.11.08 |
---|---|
[빅데이터] 빅데이터 처리와 Hadoop의 등장 (2) | 2024.07.05 |