Miner

Spark(5) - Spark 본문

데이터 엔지니어링/Spark

Spark(5) - Spark

MineTime76 2024. 1. 30. 16:41

Hadoop = 1세대 빅데이터 처리 기술

Spark = 2세대 빅데이터 처리 기술

Yarn 등을 분산환경 / 컨테이너 위에서 가능 / Scala 로 작성됨

 

Spark 3.0 구성

Spark Core, SQL, ML, MLib, Streaming, GraphX

Spark vs MapReduce

Spark은 기본적으로 메모리 기반

  • 메모리가 부족해지면 디스크 사용
  • MapReduce는 디스크 기반

MapReduce는 하둡(Yarn)위에서만 동작

  • Spark은 하둡(Yarn)이외에도 다른 분산 컴퓨팅 환경 지원(K8s, Mesos)

MapReduce는 키와 밸류 기반 데이터 구조만 지원

  • Spark은 판다스 데이터프레임과 개념적으로 동일한 데이터 구조 지원

Spark은 다양한 방식의 컴퓨팅을 지원

  • 배치 데이터 처리, 스트림 데이터 처리, SQL, 머신 러닝, 그래프 분석

Spark 프로그래밍 API

RDD (Resilient Distributed Dataset)

  • 로우레벨 프로그래밍 API로 세밀한 제어가 가능
  • 하지만 코딩 복잡도 증가

DataFrame & Dataset (판다스의 데이터프레임과 흡사)

  • 하이레벨 프로그래밍 API로 점점 많이 사용되는 추세
  • 구조화 데이터 조작이라면 보통 Spark SQL을 사용
  • DataFrame/Dateset이 꼭 필요한 경우는?
    • ML 피쳐 엔지니어링을 하거나 Spark ML을 쓰는 경우
    • SQL 만으로 할 수 없는 일의 경

Spark SQL

Spark SQL은 구조화된 데이터 처리를 SQL로 처리

데이터 프레임을 SQL로 처리 가능

  • 데이터프레임은 테이블처럼 sql로 처리 가능
  • 판다스도 동일 기능 제공

Hive 쿼리 보다 최대 100배까지 빠른 성능을 보장

  • 사실은 그렇지 않음. Hive도 그 사이에 메모리를 쓰는 걸로 발전
    • HIve : 디스크 -> 메모리
    • Spark : 메모리 ->디스크
    • Presto : 메모리 -> 디스크
    • 최적화 포인트가 다르지만 3개의 성능은 비슷하다. 

Spark ML

머신러닝 관련 다양한 알고리즘, 유틸리티로 구성된 라이브러리

Classification, Regression, Clustering, Collaborative Filtering

RDD 기반과 데이터프레임 기반의 두 버전이 존재

  • spark.mlib가 RDD 기반이고 spark.ml은 데이터프레임 기반
  • spark.mlib는 RDD위에서 동작하는 이전 라이브러리로 더 이상 업데이트가 안됨

항상 spark.ml을 사용할 것 (import pyspark.ml)

 

Spark ML의 장점

원스톱 ML 프레임워크

  • 데이터프레임과 SparkSQL등을 이용해 전처리
  • Spark ML 을 이용해 모델 빌딩
  • ML Pipeline을 통해 모델 빌딩 자동화
  • MLflow로 모델 관리하고 서빙(MLOps)

대용량 데이터도 처리 가능 !

 

 

 

'데이터 엔지니어링 > Spark' 카테고리의 다른 글

Spark(7)  (0) 2024.01.30
Spark(6) - Spark 사용  (0) 2024.01.30
Spark(4) - Install Hadoop  (0) 2024.01.22
Spark(3) - MapReduce 프로그래밍  (0) 2024.01.22
Spark(2) - Yarn  (0) 2024.01.22