Apache Spark란 무엇입니까?
Apache Spark는 빅 데이터 워크로드에 사용되는 오픈 소스 분산 처리 시스템입니다. Apache Spark는 인 메모리 캐시 및 최적화된 쿼리 실행을 활용하여 모든 크기의 데이터에 대해 빠른 분석 쿼리를 실행합니다. Java, Scala, Python 및 R로 개발 API를 제공하고 일괄 처리, 대화형 쿼리, 실시간 분석, 기계 학습, 그래프 처리 등 여러 워크로드에서 코드 재사용을 지원합니다. FINRA, Yelp, Zillow, DataXu, Urban Institute 및 CrowdStrike를 포함한 모든 업계의 조직에서 사용됩니다.
Apache Spark의 역사는 어떻게 되나요?
Apache Spark는 2009년 UC 버클리의 AMPLab에서 학생, 연구원, 교수진이 참여하는 공동 연구 프로젝트로 시작되었으며 데이터 집약적인 애플리케이션 도메인에 중점을 두고 있습니다. Spark의 목표는 Hadoop MapReduce의 확장성과 내결함성을 유지하면서 기계 학습 및 대화형 데이터 분석과 같은 빠른 반복 처리에 최적화된 새로운 프레임워크를 만드는 것이었습니다. "Spark: Cluster Computing with Working Set"라는 제목의 첫 번째 논문은 2010년 6월에 출판되었으며 Spark는 BSD 라이선스에 따라 오픈 소스로 제공되었습니다. Spark는 2013년 6월 Apache Software Foundation(ASF)의 인큐베이션 단계에 들어갔고, 2014년 2월 Apache 최상위 프로젝트(Top-Level Project)로 설립되었습니다. Spark는 Apache Mesos에서 독립형으로 실행되거나 Apache Hadoop에서 가장 자주 실행될 수 있습니다.
Apache Spark는 어떻게 작동하나요?
Hadoop MapReduce는 병렬 분산 알고리즘을 사용하여 빅 데이터 세트를 처리하기 위한 프로그래밍 모델입니다. 개발자는 작업 배포 및 내결함성에 대해 걱정할 필요 없이 대규모 병렬 연산자를 작성할 수 있습니다. 그러나 MapReduce의 과제는 작업을 실행하는 데 필요한 순차적인 다단계 프로세스입니다. 각 단계에서 MapReduce는 클러스터에서 데이터를 읽고, 작업을 수행하고, 결과를 HDFS에 다시 씁니다. 각 단계에는 디스크 읽기 및 쓰기가 필요하므로 MapReduce 작업은 디스크 I/O 지연 시간으로 인해 속도가 느려집니다.
Spark는 인 메모리 처리를 수행하고, 작업의 단계 수를 줄이고, 여러 병렬 작업에서 데이터를 재사용하여 MapReduce의 한계를 해결하기 위해 만들어졌습니다. Spark를 사용하면 데이터를 메모리로 읽어 들이고, 작업을 수행하고, 결과를 다시 쓰는 과정에서 단 한 단계만 필요하므로 실행 속도가 훨씬 빨라집니다. 또한 Spark는 인 메모리 캐시를 사용하여 데이터를 재사용하여 동일한 데이터 세트에서 함수를 반복적으로 호출하는 기계 학습 알고리즘의 속도를 크게 높입니다. 데이터 재사용은 메모리에 캐시되고 여러 Spark 작업에서 재사용되는 객체 모음인 Resilient Distributed Dataset(RDD)에 대한 추상화인 DataFrames 생성을 통해 수행됩니다. 이는 특히 기계 학습 및 대화형 분석을 수행할 때 Spark가 MapReduce보다 몇 배 더 빨라지도록 지연 시간을 크게 줄여줍니다.
주요 차이점: Apache Spark와 Apache Hadoop
Spark와 Hadoop MapReduce 설계의 차이점 외에도 많은 조직에서는 이러한 빅 데이터 프레임워크를 무료로 사용하여 더 광범위한 비즈니스 문제를 해결하는 데 사용하고 있습니다.
Hadoop은 Hadoop 분산 파일 시스템(HDFS)을 스토리지로, YARN을 다양한 애플리케이션에서 사용하는 컴퓨팅 리소스를 관리하는 방법으로, MapReduce 프로그래밍 모델을 실행 엔진으로 구현하는 오픈 소스 프레임워크입니다. 일반적인 Hadoop 구현에서는 Spark, Tez 및 Presto와 같은 다양한 실행 엔진도 배포됩니다.
Spark는 대화형 쿼리, 기계 학습 및 실시간 워크로드에 초점을 맞춘 오픈 소스 프레임워크입니다. 자체 스토리지 시스템은 없지만 HDFS와 같은 다른 스토리지 시스템이나 Amazon Redshift, Amazon S3, Couchbase, Cassandra 등과 같은 기타 인기 스토어에서 분석을 실행합니다. Spark on Hadoop은 YARN을 활용하여 다른 Hadoop 엔진과 마찬가지로 공통 클러스터 및 데이터 세트를 공유하여 일관된 서비스 수준과 응답을 보장합니다.
Apache Spark의 이점은 무엇인가요?
Apache Spark를 Hadoop 에코시스템에서 가장 활발한 프로젝트 중 하나로 만드는 데에는 많은 이점이 있습니다. 여기에는 다음이 포함됩니다.
신속함
인 메모리 캐시 및 최적화된 쿼리 실행을 통해 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는 플랫폼의 기초입니다. 메모리 관리, 장애 복구, 스케줄링, 작업 배포 및 모니터링, 스토리지 시스템과의 상호 작용을 담당합니다. Spark Core는 Java, Scala, Python 및 R용으로 구축된 애플리케이션 프로그래밍 인터페이스(API)를 통해 노출됩니다. 이러한 API는 간단한 상위 수준 연산자 뒤에 분산 처리의 복잡성을 숨깁니다.
MLlib
기계 학습
Spark에는 대규모 데이터에 대한 기계 학습을 수행하는 알고리즘 라이브러리인 MLlib가 포함되어 있습니다. 기계 학습 모델은 모든 Hadoop 데이터 소스에서 R 또는 Python을 사용하여 데이터 사이언티스트가 훈련하고, MLlib를 사용하여 저장하고, Java 또는 Scala 기반 파이프라인으로 가져올 수 있습니다. Spark는 메모리에서 실행되는 빠른 대화형 계산을 위해 설계되어 기계 학습을 빠르게 실행할 수 있습니다. 알고리즘에는 분류, 회귀, 클러스터링, 협업 필터링 및 패턴 마이닝을 수행하는 기능이 포함됩니다.
Spark Streaming
실시간
Spark Streaming은 Spark Core의 빠른 스케줄링 기능을 활용하여 스트리밍 분석을 수행하는 실시간 솔루션입니다. 미니 배치로 데이터를 수집하고 배치 분석을 위해 작성된 동일한 애플리케이션 코드를 사용하여 해당 데이터에 대한 분석을 가능하게 합니다. 이렇게 하면 배치 처리 및 실시간 스트리밍 애플리케이션에 동일한 코드를 사용할 수 있으므로 개발자 생산성이 향상됩니다. Spark Streaming은 Twitter, Kafka, Flume, HDFS, ZeroMQ 및 Spark 패키지 생태계에서 발견된 기타 여러 데이터를 지원합니다.
Spark SQL
대화형 쿼리
Spark SQL은 MapReduce보다 최대 100배 빠른 지연 시간이 짧은 대화형 쿼리를 제공하는 분산 쿼리 엔진입니다. 여기에는 수천 개의 노드로 확장하는 동시에 빠른 쿼리를 위한 비용 기반 옵티마이저, 열 기반 스토리지 및 코드 생성이 포함됩니다. 비즈니스 분석가는 데이터 쿼리를 위해 표준 SQL 또는 Hive 쿼리 언어를 사용할 수 있습니다. 개발자는 Scala, Java, Python, R로 제공되는 API를 사용할 수 있으며 JDBC, ODBC, JSON, HDFS, Hive, ORC, Parquet 등 다양한 데이터 소스를 즉시 사용할 수 있습니다. 다른 인기 스토어(Amazon Redshift, Amazon S3, Couchbase, Cassandra, MongoDB, Salesforce.com, Elasticsearch 등)를 Spark Packages 생태계에서 찾을 수 있습니다.
GraphX
그래프 프로세싱
Spark GraphX는 Spark를 기반으로 구축된 분산 그래프 처리 프레임워크입니다. GraphX는 ETL, 탐색적 분석 및 반복적 그래프 계산을 제공하여 사용자가 대화형 방식으로 그래프 데이터 구조를 대규모로 구축하고 변환할 수 있도록 합니다. 매우 유연한 API와 다양한 분산 그래프 알고리즘이 함께 제공됩니다.
Apache Spark의 사용 사례로는 어떤 것들이 있나요?
Spark는 빅 데이터 워크로드에 사용되는 범용 분산 처리 시스템입니다. 패턴을 감지하고 실시간 인사이트를 제공하기 위해 모든 유형의 빅 데이터 사용 사례에 배포되었습니다. 사용 사례의 예는 다음과 같습니다.
금융 서비스
Spark는 은행 업무에서 고객 이탈을 예측하고 새로운 금융 상품을 추천하는 데 사용됩니다. 투자 은행에서 Spark는 주가를 분석하여 미래 추세를 예측하는 데 사용됩니다.
의료 서비스
Spark는 일선 의료 종사자가 모든 환자 상호 작용에 대한 데이터를 사용할 수 있도록 함으로써 포괄적인 환자 치료를 구축하는 데 사용됩니다. Spark는 환자 치료를 예측/추천하는 데에도 사용할 수 있습니다.
제조
Spark는 예방 유지 보수 시기를 추천하여 인터넷에 연결된 장비의 가동 중지 시간을 없애는 데 사용됩니다.
소매
Spark는 맞춤형 서비스 및 혜택을 통해 고객을 유치하고 유지하는 데 사용됩니다.
클라우드에 Apache Spark를 배포하는 방법은 무엇인가요?
클라우드는 성능, 확장성, 신뢰성, 가용성 및 대규모의 경제를 제공하므로 Spark는 클라우드의 이상적인 워크로드입니다. ESG 연구에 따르면 응답자의 43%가 Spark의 기본 배포로 클라우드를 고려하고 있는 것으로 나타났습니다. 고객이 클라우드를 Spark의 장점으로 인식한 가장 큰 이유는 배포 시간 단축, 가용성 향상, 특성/기능 업데이트 빈도 증가, 탄력성 향상, 지리적 범위 확대, 실제 활용에 따른 비용 등입니다.
Apache Spark용 AWS 제품에는 어떤 것이 있나요?
Amazon EMR은 클라우드에서 Apache Spark를 구축하기 위한 최상의 서비스입니다. 상용 Hadoop 및 Spark 배포의 통합/테스트 성능을 클라우드의 규모, 단순성 및 비용 효율성과 결합하기 때문입니다. Amazon EMR을 활용하면 노드 프로비저닝, 클러스터 설정, Spark 구성 또는 클러스터 튜닝을 수행하지 않아도 단 몇 분 만에 Spark 클러스터를 시작할 수 있습니다. EMR에서는 컴퓨팅 인스턴스의 수에 상관없이 모두 단 몇 분 만에 프로비저닝할 수 있습니다. Auto Scaling을 사용하면 EMR이 Spark 클러스터를 자동으로 확장하여 모든 크기의 데이터를 처리하고, 작업이 완료되면 사용하지 않는 용량에 대한 비용을 지불하지 않도록 백업할 수 있습니다. 정해진 기간을 약정하고 Amazon EC2 예약 인스턴스를 사용하여 최대 75%를 절약하거나, 예비 AWS 컴퓨팅 용량에서 클러스터를 실행하고 EC2 스팟을 사용하여 최대 90%를 절약함으로써 요금을 낮출 수 있습니다.
지금 계정을 생성하여 Apache Spark on AWS를 시작하세요.