Apache Spark란?

Apache Spark는 SQL, 스트리밍, 머신러닝 및 그래프 처리를 위한 기본 제공 모듈이 있는 대규모 데이터 처리용 통합 분석 엔진입니다. Spark는 Kubernetes, 독립형 클러스터 또는 클라우드 네이티브 환경에서 실행할 수 있으며, 다양한 데이터 소스를 지원합니다. Java, Scala, Python(PySpark), R의 풍부한 API를 제공하므로 다양한 개발자와 데이터 과학자가 이용할 수 있습니다.

Google Cloud에서 Apache Spark는 Managed Service for Apache Spark를 통해 '데이터-AI' 플랫폼으로 전환됩니다. Google Cloud는 관리형 클러스터 또는 서버리스 Spark 옵션, Lightning Engine과 같은 획기적인 성능 향상을 활용하여 기존 Spark 배포와 관련된 '튜닝 부담'을 해결합니다. 통합 데이터 및 AI 플랫폼에 대한 심층적인 통합을 통해 사용자는 그 어느 때보다 빠르게 원시 데이터에서 AI 기반 작업으로 이동할 수 있습니다.

Apache Spark 개요

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

  • Spark Core는 범용 분산 데이터 처리 엔진이며 분산된 태스크 디스패치, 예약, 기본 I/O를 관리하는 기본 실행 엔진입니다. Spark Core는 탄력적 분산 데이터 세트(RDD)라는 개념을 도입했습니다. RDD는 내결함성으로 병렬 처리가 가능한 변경 불가능한 객체 분산 컬렉션입니다. 그 위에 SQL, 스트림 처리, 머신러닝, 그래프 계산을 위한 라이브러리가 있습니다. 이 모든 라이브러리를 애플리케이션에서 함께 사용할 수 있습니다.
  • 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를 실행할 때 쿼리 및 데이터 처리 태스크를 크게 가속화합니다.
  • Spark Streaming은 확장 가능하고 내결함성 있는 스트리밍 솔루션을 쉽게 빌드할 수 있게 해줍니다. 또한 스트림 처리에 Spark 언어 통합 API를 활용하므로 DStreams 또는 DataFrames를 기반으로 구축된 최신 Structured Streaming API를 사용하여 일괄 작업과 동일한 방식으로 스트리밍 작업을 작성할 수 있습니다. Spark Streaming은 Java, Scala, Python을 지원하며 즉시 사용 가능한 스테이트풀(Stateful), 1회만 실행되는 시맨틱스를 갖추고 있습니다.
  • MLlib는 실용적인 ML을 확장 가능하고 쉽게 만드는 도구를 갖춘 Spark 확장형 머신러닝 라이브러리입니다. MLlib에는 분류, 회귀분석, 추천 및 클러스터링 등 일반적인 학습 알고리즘이 많이 포함되어 있습니다. 또한 기능 변환, ML 파이프라인 구성, 모델 평가, 분산 선형 대수, 통계를 포함한 워크플로와 기타 유틸리티도 포함되어 있습니다. Gemini Enterprise Agent Platform과 결합하면 Spark MLlib 워크플로를 MLOps 파이프라인에 원활하게 통합할 수 있으며, 코딩 및 문제 해결 시 Gemini를 활용하여 개발을 개선할 수 있습니다.
  • GraphX는 그래프와 그래프 병렬 계산을 위한 Spark API로서 유연성이 뛰어나며 그래프와 컬렉션 모두에서 원활하게 작동합니다. 또한 추출/변환/로드와 탐색 분석, 그리고 반복적 그래프 계산이 한 시스템 내에 통합되어 있습니다.

Apache Spark 생태계 및 구성요소

Spark 생태계에는 5가지 주요 구성요소가 포함되어 있으며, 각 구성요소는 Google Cloud의 인프라로 강화됩니다.

  • Spark Core: 분산된 작업 디스패치 및 I/O를 관리하는 기본 실행 엔진입니다. Spark Core는 탄력적 분산 데이터 세트(RDD)라는 개념을 도입했습니다. RDD는 내결함성을 갖춘 병렬 처리되는 변경 불가능한 객체 분산 컬렉션입니다.
  • Spark SQL: DataFrames를 사용하여 정형 데이터를 처리하는 모듈입니다. Google Cloud는 Lightning Engine을 통해 이러한 작업을 더욱 가속화하여 수동 튜닝 없이도 속도를 크게 높일 수 있습니다.
  • Spark Streaming: 일괄 작업과 실시간 작업 모두에 확장 가능하고 내결함성 있는 스트리밍 솔루션을 지원합니다.
  • MLlib: 확장 가능한 머신러닝 라이브러리입니다. Gemini Enterprise Agent Platform과 결합하면 MLlib 워크플로를 MLOps 파이프라인에 원활하게 통합할 수 있으며, 코딩 및 문제 해결 시 Gemini를 활용하여 개발을 개선할 수 있습니다.
  • GraphX: 그래프와 그래프 병렬 계산을 위한 API입니다.

Apache Spark의 이점

속도

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

사용 편의성

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

확장성

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

보편성

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

오픈소스 프레임워크 혁신

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

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

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

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

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

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

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

데이터 엔지니어

데이터 엔지니어는 Spark를 사용하여 강력한 데이터 처리 파이프라인과 대규모 ETL 워크플로를 설계, 빌드, 유지관리합니다. Google Cloud에서 데이터 엔지니어는 Managed Service for Apache Spark를 통해 제로 운영 서버리스 실행 또는 완전 관리형 클러스터 중에서 선택하여 인프라 관리를 간소화할 수 있습니다. 엔지니어는 BigQuery 및 Knowledge Catalog와 통합해 Apache Iceberg와 같은 형식을 사용하여 거버넌스가 적용된 개방형 레이크하우스 아키텍처를 빌드할 수 있습니다. 또한 데이터 에이전트와 Gemini를 사용하여 데이터 랭글링을 자동화하고 PySpark 코드 생성을 가속화하여 원시 데이터에서 프로덕션 레디 파이프라인으로 빠르게 전환할 수 있습니다.

데이터 과학자

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

Google Cloud에서 Spark를 실행하는 더 나은 방법

더 쉽고 스마트하며 빠르게 Spark를 실행하는 새로운 방법

Google Cloud는 Spark를 대규모로 실행할 때 발생하는 일반적인 문제를 해결해 주므로 인프라가 아닌 인사이트에 집중할 수 있습니다. Managed Service for Apache Spark로 환경을 최적화하세요. Managed Service for Apache Spark:

  • 유연한 배포 옵션: 워크로드에 적합한 환경을 선택하세요. 제로 운영 서버리스 Spark를 활용하여 운영 오버헤드를 없애거나, 완전 관리형 클러스터를 통해 세분화된 제어를 유지할 수 있습니다.
  • 업계 최고의 성능: Lightning Engine으로 가장 까다로운 ETL 및 데이터 과학 워크로드 속도를 최대 4.9배 향상합니다. 서버리스 클러스터와 관리형 클러스터 모두에서 사용 가능하며, 코드 변경 없이 컴퓨팅 비용을 절감하고 수동 튜닝 부담을 없애줍니다.
  • 선호하는 IDE에서 통합 개발: VS Code, Jupyter 등 선호하는 환경에서 직접 Spark 코드를 작성하고 실행하세요. 컨텍스트 전환 없이 동일한 거버넌스 데이터에서 SQL과 Spark 전반에 걸쳐 원활한 경험을 누릴 수 있습니다.
  • 에이전트 AI 개발: PySpark 코딩과 데이터 랭글링을 자동화하는 데이터 에이전트로 워크플로를 가속화할 수 있습니다. Gemini Cloud Assist를 활용하여 복잡한 작업의 근본 원인을 자동으로 분석하고 문제를 해결하세요.
  • 통합 거버넌스: Knowledge Catalog를 사용하여 데이터 및 AI 거버넌스를 관리하고, 에이전트에 대한 시맨틱스를 제공하며, 수집부터 AI 기반 인사이트에 이르기까지 일관된 데이터 수명 주기를 보장합니다.

추가 리소스

다음 단계 수행

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

Google Cloud