본문 바로가기

Data & Database

Spark의 개요 및 특징

Apache Spark

Apache Spark는 빅 데이터 워크로드에 사용되는 오픈 소스 분산 처리 시스템으로 인 메모리 캐시 및 최적화된 쿼리 실행을 활용하여 모든 크기의 데이터에 대해 빠른 분석 쿼리를 실행합니다.

Java, Scala, Python 및 R로 개발 API를 제공하고 일괄 처리, 대화형 쿼리, 실시간 분석, 기계 학습, 그래프 처리 등 여러 워크로드에서 코드 재사용을 지원합니다.

Apache Spark 동작 방식

인 메모리 처리를 수행하고, 작업의 단계 수를 줄이고, 여러 병렬 작업에서 데이터를 재사용하여 MapReduce의 한계를 해결하기 위해 만들어졌습니다.

Spark를 사용하면 데이터를 메모리로 읽어 들이고, 작업을 수행하고, 결과를 다시 쓰는 과정을 단 한 단계로 실행하여 속도가 훨씬 빨라집니다. 또한 Spark는 인 메모리 캐시를 사용하여 데이터를 재사용하여 동일한 데이터 세트에서 함수를 반복적으로 호출하는 기계 학습 알고리즘의 속도를 크게 높입니다.

데이터 재사용은 메모리에 캐시되고 여러 Spark 작업에서 재사용되는 객체 모음인 Resilient Distributed Dataset(RDD)에 대한 추상화인 DataFrames 생성을 통해 수행됩니다. 이는 특히 기계 학습 및 대화형 분석을 수행할 때 Spark가 MapReduce보다 몇 배 더 빨라지도록 지연 시간을 크게 줄여줍니다.

Apache Spark와 Apache Hadoop의 차이점

Hadoop

분산 파일 시스템(HDFS)을 스토리지로, YARN을 다양한 애플리케이션에서 사용하는 컴퓨팅 리소스를 관리하는 방법으로, MapReduce 프로그래밍 모델을 실행 엔진으로 구현하는 오픈 소스 프레임워크

Spark

대화형 쿼리, 기계 학습 및 실시간 워크로드에 초점을 맞춘 오픈 소스 프레임워크, 자체 스토리지 시스템은 없으나 HDFS와 같은 다른 스토리지 시스템이나 Amazon Redshift, Amazon S3, Couchbase, Cassandra 등과 같은 기타 스토어에서 분석을 실행합니다.

Apache Spark 장점

신속함

인 메모리 캐시 및 최적화된 쿼리 실행을 통해 Spark는 모든 크기의 데이터에 대해 빠른 분석 쿼리를 실행할 수 있습니다.

개발자 친화적

Apache Spark는 기본적으로 Java, Scala, R 및 Python을 지원하므로, 애플리케이션을 구축할 수 있도록 다양한 언어를 제공합니다. 이러한 API를 사용하면 필요한 코드 양을 크게 줄이고, 분산 처리의 복잡성이 숨겨지기 때문에 개발자가 작업을 쉽게 수행할 수 있습니다.

다중 워크로드

Apache Spark는 대화형 쿼리, 실시간 분석, 기계 학습, 그래프 처리 등 여러 워크로드를 실행할 수 있는 기능을 제공합니다. 하나의 애플리케이션으로 여러 워크로드를 원활하게 결합할 수 있습니다.

Apache Spark 워크로드

Spark 프레임워크에는 다음이 포함됩니다.

  • 플랫폼의 기반인 Spark Core
  • 대화형 쿼리를 위한 Spark SQL
  • 실시간 분석을 위한 Spark Streaming
  • 기계 학습을 위한 Spark MLlib
  • 그래프 처리를 위한 Spark GraphX

Spark Core

Spark Core는 플랫폼의 기초입니다. 메모리 관리, 장애 복구, 스케줄링, 작업 배포 및 모니터링, 스토리지 시스템과의 상호 작용을 담당합니다. 

MLlib

기계 학습

Spark에는 대규모 데이터에 대한 기계 학습을 수행하는 알고리즘 라이브러리인 MLlib가 포함되어 있습니다. 기계 학습 모델은 모든 Hadoop 데이터 소스에서 R 또는 Python을 사용하여 데이터 사이언티스트가 훈련하고, MLlib를 사용하여 저장하고, Java 또는 Scala 기반 파이프라인으로 가져올 수 있습니다. Spark는 메모리에서 실행되는 빠른 대화형 계산을 위해 설계되어 기계 학습을 빠르게 실행할 수 있습니다. 알고리즘에는 분류, 회귀, 클러스터링, 협업 필터링 및 패턴 마이닝을 수행하는 기능이 포함됩니다.

Spark Streaming

실시간

Spark Streaming은 Spark Core의 빠른 스케줄링 기능을 활용하여 스트리밍 분석을 수행하는 실시간 솔루션입니다. 미니 배치로 데이터를 수집하고 배치 분석을 위해 작성된 동일한 애플리케이션 코드를 사용하여 배치 처리 및 실시간 스트리밍 애플리케이션에 동일한 코드를 사용할 수 있도록해 개발자 생산성이 향상됩니다

Spark SQL

대화형 쿼리

Spark SQL은 MapReduce보다 최대 100배 빠른 지연 시간이 짧은 대화형 쿼리를 제공하는 분산 쿼리 엔진입니다. 데이터 쿼리를 위해 표준 SQL 또는 Hive 쿼리 언어를 사용할 수 있습니다. 개발자는 API를 사용하여 JDBC, JSON, HDFS 등 다양한 데이터 소스를 즉시 사용할 수 있고, 다른 인기 스토어(Amazon Redshift, Amazon S3, Couchbase, Cassandra, MongoDB 등)를 Spark Packages 에서 찾을 수 있습니다.

GraphX

그래프 프로세싱

Spark GraphX는 Spark를 기반으로 구축된 분산 그래프 처리 프레임워크입니다. GraphX는 ETL, 탐색적 분석 및 반복적 그래프 계산을 제공하여 사용자가 대화형 방식으로 그래프 데이터 구조를 대규모로 구축하고 변환할 수 있도록 합니다. 매우 유연한 API와 다양한 분산 그래프 알고리즘이 함께 제공됩니다.

 

 

참고 : https://aws.amazon.com/ko/what-is/apache-spark/

'Data & Database' 카테고리의 다른 글

Snowflake 개요 및 특징  (2) 2023.11.19
Chart.js로 데이터 시각화하기  (0) 2023.11.15
Kafka와 Spark의 차이점 & 유사점  (0) 2023.11.13
Kafka 개요 및 특징  (0) 2023.11.10
NiFi 개요와 특징  (0) 2023.06.29