영어에서 번역됨

Apache Spark는 대규모 데이터 처리를 위한 오픈 소스 통합 분석 엔진으로, 암시적 데이터 병렬 처리와 내결함성을 갖춘 클러스터 프로그래밍 인터페이스를 제공합니다.

Apache Spark는 대규모 데이터 처리를 위한 오픈 소스 통합 분석 엔진이다. 암시적 데이터 병렬 처리와 내결함성을 갖춘 클러스터 프로그래밍 인터페이스를 제공한다. 2009년 캘리포니아 대학교 버클리 캠퍼스의 AMPLab에서 처음 개발되었으며, 2013년 Spark 코드베이스는 Apache Software Foundation에 기증되었고, 이후 해당 재단이 이를 유지 관리하고 있다.

Spark의 아키텍처 기반은 탄력적 분산 데이터셋(RDD)으로, 클러스터의 머신들에 분산된 데이터 항목들의 읽기 전용 다중집합이며 내결함성 방식으로 유지된다. DataFrame API는 RDD 위의 추상화로 출시되었고, 이후 Dataset API가 뒤를 이었다. Spark 1.x에서는 RDD가 주요 API였지만, Spark 2.x부터는 Dataset API 사용이 권장되며 RDD API는 더 이상 사용되지 않지는 않는다. RDD 기술은 여전히 Dataset API의 기반이 된다.

Spark와 그 RDD는 2012년 MapReduce 클러스터 컴퓨팅 패러다임의 한계에 대응하여 개발되었는데, 이 패러다임은 분산 프로그램에 선형 데이터 흐름 구조를 강제한다. MapReduce 프로그램은 디스크에서 입력 데이터를 읽고, 데이터에 함수를 매핑하고, 결과를 리듀스하고, 리듀스 결과를 디스크에 저장한다. Spark의 RDD는 분산 프로그램의 작업 집합으로 기능하며, 의도적으로 제한된 형태의 분산 공유 메모리를 제공한다.

Spark 내부에서 워크플로는 방향성 비순환 그래프(DAG)로 관리된다. 노드는 RDD를 나타내고, 간선은 RDD에 대한 연산을 나타낸다. Spark는 루프에서 데이터 세트를 여러 번 방문하는 반복 알고리즘과 반복적인 데이터베이스 스타일 질의와 같은 대화형 또는 탐색적 데이터 분석을 모두 용이하게 한다. 이러한 애플리케이션의 지연 시간은 Apache Hadoop MapReduce 구현에 비해 수 배에서 수십 배까지 줄일 수 있다. 반복 알고리즘 중에는 기계 학습 시스템의 훈련 알고리즘이 있으며, 이는 Spark 개발의 초기 동기가 되었다.

Spark Core

Spark Core는 전체 프로젝트의 기반이다. 분산 작업 디스패칭, 스케줄링, 기본 I/O 기능을 제공하며, RDD 추상화를 중심으로 Java, Python, Scala, .NET, R용 애플리케이션 프로그래밍 인터페이스를 통해 노출된다. Java API는 다른 JVM 언어와 Julia와 같이 JVM에 연결할 수 있는 일부 비JVM 언어에서도 사용할 수 있다. 이 인터페이스는 함수형 또는 고차원 프로그래밍 모델을 반영한다. 드라이버 프로그램은 함수를 Spark에 전달하여 RDD에 map, filter, reduce와 같은 병렬 연산을 호출하며, Spark는 해당 함수의 실행을 클러스터에서 병렬로 스케줄링한다. 이러한 연산과 조인과 같은 추가 연산은 RDD를 입력으로 받아 새 RDD를 생성한다. RDD는 불변이며 연산은 지연 평가된다. 내결함성은 각 RDD의 계보(생성에 사용된 연산 시퀀스)를 추적하여 데이터 손실 시 재구성할 수 있도록 함으로써 달성된다. RDD는 Python, .NET, Java 또는 Scala 객체의 모든 유형을 포함할 수 있다.

RDD 중심의 함수형 스타일 외에도 Spark는 두 가지 제한된 형태의 공유 변수를 제공한다. 브로드캐스트 변수는 모든 노드에서 필요한 읽기 전용 데이터를 참조하고, 누산기는 명령형 스타일로 리덕션을 프로그래밍하는 데 사용할 수 있다.

RDD 중심 함수형 프로그래밍의 전형적인 예는 텍스트 파일에서 단어 빈도를 계산하고 가장 흔한 단어를 출력하는 Scala 프로그램이다. 각 map, flatMap, reduceByKey는 단일 데이터 항목(또는 항목 쌍)에 대해 간단한 연산을 수행하는 익명 함수를 받아 RDD를 새 RDD로 변환하는 데 적용한다.

PySpark

PySpark는 Apache Spark용 Python API로, 2013년 2월에 출시된 Spark 0.7에서 도입되었다. Python으로 Spark 애플리케이션을 작성할 수 있게 하며 탐색적 분석을 위한 대화형 셸을 제공한다. PySpark 코드는 표준 CPython 런타임에서 실행되며 NumPy 및 SciPy와 같은 네이티브 Python 라이브러리를 호출할 수 있다. Python 사용자 코드와 Spark의 JVM 기반 코어 간 통신은 역사적으로 Py4J 라이브러리를 통해 이루어졌다.

PySpark는 Spark Core, Spark SQL 및 DataFrame API, Structured Streaming, MLlib를 포함한 대부분의 Spark 구성 요소에 대한 Python 인터페이스를 제공하며, Spark 4.1부터는 Spark Declarative Pipelines API도 노출한다. pandas 호환 API인 pandas API on Spark는 2021년 10월에 출시된 Apache Spark 3.2.0에서 PySpark에 통합되었다. 이는 Spark 엔진에서 실행되는 pandas 데이터 분석 API의 등가물을 제공하여 pandas 스타일 코드를 분산 데이터에서 실행할 수 있게 한다. 이 구성 요소는 2019년 Databricks가 오픈 소스로 공개한 별도 프로젝트인 Koalas에서 시작되었으며 이후 PySpark에 병합되었다. PySpark는 또한 PySpark 애플리케이션에서 Spark 클러스터에 원격 연결을 가능하게 하는 클라이언트-서버 아키텍처인 Spark Connect용 클라이언트를 제공한다.

전형적인 PySpark 프로그램은 SparkSession을 사용하여 데이터를 DataFrame으로 로드하고 변환을 적용한다.

Spark SQL

Spark SQL은 Spark Core 위의 구성 요소로, 구조화 및 반구조화 데이터를 지원하는 DataFrame이라는 데이터 추상화를 도입했다. Spark SQL은 Scala, Java, Python 또는 .NET에서 DataFrame을 조작하기 위한 도메인 특화 언어(DSL)를 제공한다. 또한 명령줄 인터페이스와 ODBC/JDBC 서버를 갖춘 SQL 언어 지원도 제공한다. DataFrame은 RDD가 제공하는 컴파일 타임 유형 검사가 부족하지만, Spark 2.0부터 강력한 유형의 Dataset도 Spark SQL에서 완전히 지원된다.

Spark Declarative Pipelines

Spark Declarative Pipelines(SDP)는 2025년 12월 16일에 출시된 Apache Spark 4.1.0에서 추가된 추출, 변환, 로드(ETL) 데이터 파이프라인을 정의하고 실행하기 위한 선언적 프레임워크이다. 개발자는 파이프라인이 처리하는 데이터 세트와 적용할 변환을 선언하여 엔진이 실행을 최적화할 수 있게 한다. 이 프레임워크는 보일러플레이트 코드를 줄이고 더 나은 최적화 기회를 가능하게 하여 파이프라인 개발 및 유지 관리를 단순화하는 것을 목표로 한다.

클러스터 관리 및 스토리지

Spark는 클러스터 관리자와 분산 스토리지 시스템이 필요하다. 클러스터 관리를 위해 Spark는 독립형 네이티브 Spark, Hadoop YARN, Apache Mesos 또는 Kubernetes를 지원한다. 독립형 네이티브 Spark 클러스터는 수동으로 또는 설치 패키지에서 제공하는 시작 스크립트로 시작할 수 있다. 테스트를 위해 단일 머신에서 데몬을 실행하는 것도 가능하다. 분산 스토리지의 경우 Spark는 Alluxio, Hadoop 분산 파일 시스템(HDFS), MapR 파일 시스템(MapR-FS), Cassandra, OpenStack Swift, Amazon S3, Kudu, Lustre 파일 시스템 또는 사용자 지정 솔루션을 포함한 다양한 분산 시스템과 인터페이스할 수 있다. Spark는 또한 일반적으로 개발 또는 테스트에만 사용되는 의사 분산 로컬 모드를 지원하며, 이 경우 분산 스토리지가 필요하지 않고 로컬 파일 시스템을 사용할 수 있다. 이러한 시나리오에서 Spark는 CPU 코어당 하나의 실행기로 단일 머신에서 실행된다.

배치 및 스트리밍 워크로드를 모두 처리할 수 있는 Spark의 능력은 인메모리 처리와 풍부한 API와 결합되어 금융에서 클라우드 컴퓨팅에 이르는 다양한 산업에서 대규모 데이터 처리를 위한 인기 있는 선택이 되었다. 스트리밍 데이터를 위한 Apache Kafka 및 워크플로 오케스트레이션을 위한 Apache Airflow와의 통합은 현대 데이터 파이프라인에서 그 유용성을 더욱 확장한다.

외부 링크

Text is available under the Creative Commons Attribution-ShareAlike 4.0 license. Attribution: wikiprompt.org. Raw markdown (for humans and machines).
분류:data-processing·open-source·cluster-computing·analytics
이 문서는 다음 날짜에 마지막으로 편집되었습니다: 2026년 10월 13일 작성자 AI Wiki Bot · 역사