Apache Spark란 무엇인가요?

Apache Spark는 SQL, 스트리밍, 머신러닝 및 그래프 처리를 위한 기본 제공 모듈이 있는 대규모 데이터 처리용 통합 분석 엔진입니다. Spark는 클라우드의 Apache Hadoop, Kubernetes에서 자체적으로 실행될 수 있으며 다양한 데이터 소스에 대해 실행될 수 있습니다. Java, Scala, Python, R의 풍부한 API를 제공하므로 다양한 개발자와 데이터 과학자가 이용할 수 있습니다. Python API인 PySpark는 데이터 조작을 위해 Pandas와 같은 인기 라이브러리와도 원활하게 통합됩니다. Google Cloud에서 Apache Spark는 서버리스 옵션, Lightning Engine(프리뷰 버전)과 같은 획기적인 성능 개선, 통합 데이터 및 AI 플랫폼과의 긴밀한 통합을 통해 한 단계 더 발전합니다.

한 가지 일반적인 질문은 Apache Spark와 Apache Hadoop을 언제 사용하느냐는 것입니다. 이 둘은 모두 오늘날 시장에서 가장 눈에 띄는 분산 시스템에 속하며, 유사성 높은 Apache 최상위 프로젝트로서 함께 사용되는 경우가 많습니다. Hadoop은 주로 디스크 사용량이 많고 맵리듀스 패러다임을 사용하는 작업에 사용됩니다. Spark는 더 유연하지만 대체로 더 많은 비용이 드는 인메모리 처리 아키텍처입니다. 각 기능을 이해하고 있으면 언제 어떤 것을 구현할지 결정하는 데 도움이 됩니다.

Google Cloud를 통해 보다 단순하고 통합된 비용 효율적인 방식으로 Apache Spark 워크로드를 실행할 수 있는 방법을 알아보세요. 제로옵스 개발을 위해 Apache Spark용 Google Cloud 서버리스를 활용하거나 관리형 Spark 클러스터에 Dataproc을 사용할 수 있습니다.

Apache Spark 개요

Spark 생태계에는 다음과 같은 5가지 주요 구성요소가 포함됩니다.

  1. Spark Core는 범용 분산 데이터 처리 엔진이며 분산된 태스크 디스패치, 예약, 기본 I/O를 관리하는 기본 실행 엔진입니다. Spark Core는 탄력적 분산 데이터 세트(RDD)라는 개념을 도입했습니다. RDD는 내결함성으로 병렬 처리가 가능한 변경 불가능한 객체 분산 컬렉션입니다. 그 위에 SQL, 스트림 처리, 머신러닝, 그래프 계산을 위한 라이브러리가 있습니다. 이 모든 라이브러리를 애플리케이션에서 함께 사용할 수 있습니다.
  2. Spark SQL은 정형 데이터 작업을 수행하는 Spark 모듈이며, 정형 데이터 조작을 위한 RDD보다 더 최적화되고 개발자 친화적인 API를 제공하는 DataFrames를 도입했습니다. Spark SQL에서는 SQL이나 친숙한 DataFrame API를 사용하여 Spark 프로그램 내의 구조화된 데이터를 쿼리할 수 있습니다. Spark SQL은 HiveQL 구문을 지원하며 기존 Apache Hive 웨어하우스에 대한 액세스를 허용합니다. Google Cloud는 Lightning Engine과 같은 혁신 기술을 통해 Spark 작업 성능, 특히 SQL 및 DataFrame 작업을 더욱 빠르게 수행할 수 있도록 지원하며, Google Cloud에서 Spark를 실행할 때 쿼리 및 데이터 처리 태스크를 크게 가속화합니다.
  3. Spark Streaming은 확장 가능하고 내결함성 있는 스트리밍 솔루션을 쉽게 빌드할 수 있게 해줍니다. 또한 스트림 처리에 Spark 언어 통합 API를 활용하므로 DStreams 또는 DataFrames를 기반으로 구축된 최신 Structured Streaming API를 사용하여 일괄 작업과 동일한 방식으로 스트리밍 작업을 작성할 수 있습니다. Spark Streaming은 Java, Scala, Python을 지원하며 즉시 사용 가능한 스테이트풀(Stateful), 1회만 실행되는 시맨틱스를 갖추고 있습니다.
  4. MLlib는 실용적인 ML을 확장 가능하고 쉽게 만드는 도구를 갖춘 Spark 확장형 머신러닝 라이브러리입니다. MLlib에는 분류, 회귀분석, 추천 및 클러스터링 등 일반적인 학습 알고리즘이 많이 포함되어 있습니다. 또한 기능 변환, ML 파이프라인 구성, 모델 평가, 분산 선형 대수, 통계를 포함한 워크플로와 기타 유틸리티도 포함되어 있습니다. Google Cloud의 Vertex AI와 결합하면 Spark MLlib 워크플로를 MLOps 파이프라인에 원활하게 통합할 수 있으며, Gemini를 통해 코딩 및 문제 해결을 위한 개발을 향상할 수 있습니다.
  5. GraphX는 그래프와 그래프 병렬 계산을 위한 Spark API로서 유연성이 뛰어나며 그래프와 컬렉션 모두에서 원활하게 작동합니다. 또한 추출/변환/로드, 탐색적 분석, 반복적 그래프 계산이 한 시스템 내에 통합되어 있습니다.

Google Cloud는 이러한 구성요소 전반에 걸쳐 최적화된 환경을 제공합니다. 예를 들어 Lightning Engine은 Spark 및 DataFrame 성능을 향상시키고, Apache Spark용 Google Cloud 서버리스는 배포 및 관리를 간소화하며, Gemini는 BigQuery StudioVertex AI Workbench와 같은 노트북 환경에서 개발자 생산성을 높입니다.

Apache Spark 작동 방식

Apache Spark의 강력한 기능은 몇 가지 핵심 아키텍처 원칙에서 비롯됩니다.

  • 인메모리 처리: Spark는 디스크 기반 시스템에 비해 반복 알고리즘과 대화형 쿼리의 속도를 크게 높여 메모리에 데이터를 로드합니다.
  • 분산 실행: 머신 클러스터에서 작동합니다. 드라이버 프로그램은 다양한 데이터 파티션에서 태스크를 동시에 실행하는 실행자(작업자 프로세스)를 조정합니다.
  • RDD 및 DataFrame: 탄력적 분산 데이터 세트(RDD)는 기본적인 내결함성 데이터 추상화입니다. RDD를 기반으로 구축된 DataFrame은 정형 데이터에 대한 보다 풍부한 스키마 인식 API를 제공하여 Catalyst 옵티마이저를 통해 최적화를 지원합니다.
  • 지연 평가 및 DAG: Spark는 작업의 방향성 비순환 그래프(DAG)를 빌드합니다. 변환은 '지연'되어 즉시 계산되지 않으므로 Spark는 '작업'이 실행을 트리거하기 전에 전체 워크플로를 최적화할 수 있습니다.

Apache Spark의 이점

속도

Spark의 인메모리 처리 및 DAG 스케줄러는 특히 반복적인 태스크의 경우 Hadoop 맵리듀스보다 더 빠른 워크로드를 지원합니다. Google Cloud는 최적화된 인프라와 Lightning Engine으로 이러한 속도를 높입니다.

사용 편의성

Spark의 상위 수준 연산자는 병렬 앱 빌드를 간소화합니다. Scala, Python, R, SQL과 함께 대화형으로 사용하면 빠른 개발이 가능합니다. Google Cloud는 Gemini와 통합된 서버리스 옵션과 노트북을 제공하여 사용 편의성을 높입니다.



확장성

Spark는 수평적 확장성을 제공하여 클러스터 노드에 작업을 분산하여 방대한 데이터를 처리합니다. Google Cloud는 서버리스 자동 확장과 유연한 Dataproc 클러스터로 확장을 간소화합니다.

보편성

Spark는 SQL, DataFrame, 머신러닝용 MLlib, GraphX, Spark Streaming을 비롯한 다양한 라이브러리를 지원합니다. 이러한 라이브러리를 동일한 애플리케이션에서 원활하게 결합할 수 있습니다.

오픈소스 프레임워크 혁신

Spark는 신속한 혁신과 문제 해결을 위해 오픈소스 커뮤니티의 힘을 활용하여 개발 속도와 TTM(time to market)을 단축합니다. Google Cloud는 이러한 개방적인 정신을 수용하여 표준 Apache Spark를 제공하는 동시에 기능을 향상시키고 있습니다.

SQL 전용 엔진 대신 Spark를 선택해야 하는 이유

Apache Spark는 Hadoop 클러스터 또는 독립 실행형 모드로 배포할 수 있는 빠른 범용 클러스터 컴퓨팅 엔진입니다. Spark를 사용하면 프로그래머는 개발자, 데이터 과학자, 통계 경험이 있는 고급 비즈니스 담당자가 액세스할 수 있도록 자바, Scala, Python, R, SQL로 애플리케이션을 빠르게 작성할 수 있습니다. Spark SQL을 사용하면 사용자가 모든 데이터 소스에 연결하고 이를 SQL 클라이언트에서 사용할 수 있는 테이블로 표현할 수 있습니다. 또한 Spark에서는 대화형 머신러닝 알고리즘이 쉽게 구현됩니다.

Apache Impala, Apache Hive, Apache Drill 같은 SQL 전용 엔진을 사용하는 사용자는 여러 데이터베이스에 저장된 데이터를 쿼리할 때 SQL 또는 SQL 유사 언어만 사용할 수 있습니다. 이는 Spark에 비해 프레임워크가 작다는 것을 의미합니다. 하지만 Google Cloud에서는 선택지가 다양합니다. BigQuery는 강력한 SQL 기능을 제공하고, Apache Spark용 Google Cloud 서버리스와 Spark 및 Hadoop 관리형 서비스용 Dataproc을 사용하면 BigLake Metastore 및 개방형 형식을 통해 동일한 데이터에서 Spark의 다목적 기능을 사용할 수 있습니다.

기업에서 Spark를 사용하는 방식

많은 기업이 Spark를 사용하여 구조화 또는 구조화되지 않은 대량의 실시간 또는 아카이브 데이터를 처리 및 분석하는 까다롭고 계산 집약적인 작업을 간소화하고 있습니다. 또한 사용자는 Spark를 사용하여 머신러닝 및 그래프 알고리즘 등의 복잡한 관련 기능을 원활하게 통합할 수 있습니다. 일반적인 애플리케이션은 다음과 같습니다.

  • 대규모 ETL/ELT
  • 실시간 데이터 처리
  • 머신러닝
  • 대화형 데이터 탐색
  • 그래프 분석

데이터 엔지니어

데이터 엔지니어는 더 많은 언어로 프로그래밍할 수 있는 옵션을 갖춘 Spark를 사용하여 데이터 처리 작업을 코딩하고 빌드합니다. Google Cloud에서 데이터 엔지니어는 제로옵스 ETL/ELT 파이프라인을 위해 Apache Spark용 Google Cloud 서버리스를 활용하거나 관리형 클러스터 제어를 위해 Dataproc을 활용할 수 있으며, 이는 모두 거버넌스를 위해 BigQuery 및 Dataplex 범용 카탈로그와 같은 서비스와 통합됩니다.

데이터 과학자

데이터 과학자는 GPU와 Spark를 함께 사용하여 보다 뛰어난 분석 및 ML 환경을 이용할 수 있습니다. 익숙한 언어로 더 많은 양의 데이터를 더 빠르게 처리할 수 있으므로 혁신을 앞당길 수 있습니다. Google Cloud는 Spark에 대한 강력한 GPU 지원과 Vertex AI와의 원활한 통합을 제공하므로 데이터 과학자가 모델을 더 빠르게 빌드하고 배포할 수 있습니다. BigQuery Studio, Vertex AI Workbench와 같은 다양한 노트북 환경을 활용하거나 Jupyter, VS Code와 같은 선호하는 IDE를 연결할 수 있습니다. Gemini와 결합된 유연한 개발 환경은 초기 탐색 단계부터 프로덕션 배포에 이르는 워크플로를 가속화하는 데 도움이 됩니다.

Google Cloud에서 Apache Spark 실행

Google Cloud로 Spark 환경 최적화

  • Apache Spark용 Google Cloud 서버리스: 클러스터를 관리하지 않고도 Spark 작업을 실행하여 진정한 제로옵스 환경을 경험하세요. Lightning EngineGemini의 즉시 시작, 자동 확장, 성능 향상을 활용하세요. 특히 BigQuery와 통합된 경우 ETL, 데이터 과학, 대화형 분석에 적합합니다. 
  • Dataproc: 클러스터 환경을 더 세밀하게 제어해야 하거나 Spark와 함께 특정 Hadoop 생태계 구성요소가 필요한 경우 Dataproc이 완전 관리형 서비스를 제공합니다. Dataproc은 클러스터 생성 및 관리를 간소화하고 Spark 성능을 위한 Lightning Engine 개선사항의 이점도 누릴 수 있습니다. 
  • 통합되고 개방적인 생태계: Google Cloud에서 Spark를 실행하면 통합 분석을 위한 BigQuery, MLOps를 위한 Vertex AI, 개방형 메타데이터 공유를 위한 BigLake Metastore, 포괄적인 데이터 거버넌스를 위한 Dataplex 범용 카탈로그와 같은 서비스와 원활하게 통합됩니다. 이 모든 서비스는 개방형 레이크하우스 아키텍처를 지원합니다.

다음 단계 수행

$300의 무료 크레딧과 20여 개의 항상 무료 제품으로 Google Cloud에서 빌드하세요.

Google Cloud