AI

Spark : Basic

JungGwig 2022. 7. 26. 14:51

정의

  • 인메모리 기반의 대용량 데이터 고속 처리 엔진
  • 범용 분산 클러스터 컴퓨팅 프레임워크

특징

  • 인메모리 기반이기 때문에 빠른 처리가 가능하다
    • MapReduce은 작업의 중간 결과를 디스크에 쓰기 때문에 IO로 인한 작업 속도에 제약이 생기지만, 스파크는 이러한 중간 결과를 메모리에 저장하기 때문에 반복 잡어에서 높은 처리 효율을 보인다.
  • Java, Scala, Python, R, SQL과 같이 다양한 언어를 지원하여 사용의 편이성 제공
    • 언어마다 처리 속도의 차이가 있음.

[출처] https://mindfulmachines.io/blog/2018/6/apache-spark-scala-vs-java-v-python-vs-r-vs-sql26

 

  • SQL, Streaming, ML, 그래프 연산 등 다양한 컴포넌트 제공
    • Spark Streaming을 이용한 스트림 처리
    • Spark SQL을 이용한 SQL 처리
    • MLib를 이용한 머신러닝 처리
    • GraphX를 이용한 그래프 처리
    • 추가적인 SW 설치 없이 다양한 애플리케이션 구현이 가능하며, 각 컴포넌트간의 연계를 이용해 애플리케이션의 생성도 쉽게 구현
  • YARN, Mesos, Kubernetes등 다양한 클러스터에서 동작이 가능 / HDFS, HBase, Hive 등 다양한 파일 포맷 지원
    • 기본적으로 txt, Json, ORC, Parquet 등의 파일 포맷 지원
    • S3, HDFS, HBase, Hive 등과연동 가능

컴포넌트 구성

  • 스파크 코어 + 스파크 라이브러리 + 클러스터 매니저
  • 스파크 코어
    • 메인 컴포넌트로 작업 스케줄링, 메모리 관리, 장애 복구와 같은 기본적인 기능 제공
    • Resilient Distributed Dataset(RDD), Dataset, DataFrame을 이용한 스파크 연산 처리
    • RDD : 스파크 컨텍스트 객체 이용
    • Dataset, DataFrame : 스파크 세션 객체 이용
  • 스파크 라이브러리
    • Spark SQL
      • SQL을 이용하여 RDD, DataSet, DataFrame 작업을 생성하고 처리
      • Hive 메타스토어와 연결하여 하이브의 메타 정보를 이용하여 SQL 작업 처리
    • Spark Streaming
      • 실시간 데이터 스트림을 처리하는 컴포넌트, 스트림 데이터를 작은 사이즈로 쪼개어 RDD 처럼 처리
    • MLib
      • Classification, Regression, Clustering, Collaborative Filtering 등 ML 알고리즘과 모델 평가 및 외부 데이터 불러오기 같은 기능 지원
    • GraphX
      • 분산형 그래프 프로세싱 지원. 각 간선이나 점에 임의의 속성을 추가한 지향성 그래프 생성 가능
  • 클러스터 매니저
    • Standalone 관리자 및 Mesos, YARN, Kubernetes 등의 관리자를 지원