주요 컨텐츠로 이동

Apache Spark 3.4에서 Spark Connect 사용 가능

모든 곳에서 Spark 애플리케이션 실행

Announcing the general availability of Spark Connect in Apache Spark 3.4

작년 Data and AI Summit에서 Spark Connect가 소개되었습니다. 최근 출시된 Apache SparkTM 3.4의 일부로 Spark Connect가 이제 일반적으로 사용 가능합니다. 또한 최근 Databricks Connect를 Spark Connect 기반으로 재설계했습니다. 이 블로그 게시물에서는 Spark Connect가 무엇인지, 어떻게 작동하는지, 그리고 어떻게 사용하는지에 대해 설명합니다.

이제 사용자는 IDE, 노트북 및 최신 데이터 애플리케이션을 Spark 클러스터에 직접 연결할 수 있습니다

Spark Connect는 분리된 클라이언트-서버 아키텍처를 도입하여 어디서든 실행되는 모든 애플리케이션에서 Spark 클러스터로의 원격 연결을 가능하게 합니다. 클라이언트와 서버의 이러한 분리는 최신 데이터 애플리케이션, IDE, 노트북 및 프로그래밍 언어가 Spark에 대화형으로 액세스할 수 있도록 합니다.

Spark Connect는 모든 클라이언트 애플리케이션에서 Spark로의 원격 연결을 지원합니다
Spark Connect는 모든 클라이언트 애플리케이션에서 Spark로의 원격 연결을 지원합니다

Spark Connect는 안정성, 업그레이드, 디버깅 및 관찰 가능성을 향상시킵니다

이 새로운 아키텍처를 통해 Spark Connect는 일반적인 운영 문제도 완화합니다:

안정성: 메모리를 많이 사용하는 애플리케이션은 이제 Spark 클러스터 외부의 자체 프로세스에서 실행될 수 있으므로 자체 환경에만 영향을 미칩니다. 사용자는 클라이언트 환경에서 자체 종속성을 정의할 수 있으며 Spark 드라이버의 잠재적인 종속성 충돌에 대해 걱정할 필요가 없습니다.

예를 들어, 분석 또는 변환을 위해 Spark에서 대규모 데이터 세트를 검색하는 클라이언트 애플리케이션이 있는 경우 해당 애플리케이션은 더 이상 Spark 드라이버에서 실행되지 않습니다. 이는 애플리케이션이 많은 메모리 또는 CPU 주기를 사용하는 경우, 자체의 별도의 전용 환경에서 실행되기 때문에 다른 애플리케이션과 리소스를 놓고 경쟁하지 않아 해당 애플리케이션이 느려지거나 실패하는 것을 방지한다는 것을 의미합니다.

업그레이드 용이성: 과거에는 모든 애플리케이션이 클러스터와 동시에 업그레이드되어야 했기 때문에 Spark를 업그레이드하는 것이 매우 어려웠습니다. Spark Connect를 사용하면 클라이언트와 서버가 분리되어 애플리케이션을 서버와 독립적으로 업그레이드할 수 있습니다. 따라서 조직에서 Spark를 업그레이드할 때 클라이언트 애플리케이션을 변경할 필요가 없어 훨씬 쉽게 업그레이드할 수 있습니다.

디버깅 및 관찰 가능성: Spark Connect는 선호하는 IDE에서 직접 개발 중에 대화형 단계별 디버깅을 지원합니다. 마찬가지로 애플리케이션은 애플리케이션의 프레임워크 네이티브 메트릭 및 로깅 라이브러리를 사용하여 모니터링할 수 있습니다.

예를 들어, Visual Studio Code에서 Spark Connect 클라이언트 애플리케이션을 대화형으로 단계별로 실행하고, 개체를 검사하고, 디버그 명령을 실행하여 코드의 문제를 테스트하고 수정할 수 있습니다.

기술 가이드 eBook

ETL 시작하기

Spark Connect 작동 방식

Spark Connect 클라이언트 라이브러리는 Spark 애플리케이션 개발을 단순화하도록 설계되었습니다. 애플리케이션 서버, IDE, 노트북 및 프로그래밍 언어에 포함될 수 있는 씬 API입니다. Spark Connect API는 클라이언트와 Spark 드라이버 간의 언어 불가지론적 프로토콜로 해결되지 않은 논리적 계획을 사용하여 Spark의 DataFrame API를 기반으로 합니다.

Spark Connect 클라이언트는 DataFrame 작업을 프로토콜 버퍼를 사용하여 인코딩된 해결되지 않은 논리적 쿼리 계획으로 변환합니다. 이는 gRPC 프레임워크를 사용하여 서버로 전송됩니다.

Spark 드라이버에 포함된 Spark Connect 엔드포인트는 해결되지 않은 논리적 계획을 Spark의 논리적 계획 연산자로 수신하고 변환합니다. 이는 SQL 쿼리를 구문 분석하는 것과 유사하며, 속성과 관계가 구문 분석되고 초기 구문 분석 계획이 빌드됩니다. 거기에서 표준 Spark 실행 프로세스가 시작되어 Spark Connect가 Spark의 모든 최적화 및 향상 기능을 활용하도록 합니다. 결과는 Apache Arrow로 인코딩된 결과 배치로 gRPC를 통해 클라이언트로 스트리밍됩니다.

Spark Connect를 사용하면 클라이언트 애플리케이션이 gRPC를 통해 Spark와 통신합니다
Spark Connect를 사용하면 클라이언트 애플리케이션이 gRPC를 통해 Spark와 통신합니다

Spark Connect 사용 방법

Spark 3.4부터 Spark Connect를 사용할 수 있으며 PySpark 및 Scala 애플리케이션을 지원합니다. Spark Connect 클라이언트 라이브러리를 사용하여 클라이언트 애플리케이션에서 Spark Connect로 Apache Spark 서버에 연결하는 예제를 살펴보겠습니다.

Spark 애플리케이션을 작성할 때 Spark Connect를 고려해야 하는 유일한 경우는 Spark 세션을 만들 때입니다. 나머지 코드는 이전과 동일합니다.

Spark Connect를 사용하려면 코드 변경 없이 애플리케이션이 인식할 수 있도록 환경 변수(SPARK_REMOTE)를 설정하거나 Spark 세션을 만들 때 코드에 Spark Connect를 명시적으로 포함할 수 있습니다.

Jupyter 노트북 예제를 살펴보겠습니다. 이 노트북에서는 로컬 Spark 클러스터에 대한 Spark Connect 세션을 만들고, PySpark DataFrame을 만들고, 리스너 수별 상위 10개 음악 아티스트를 표시합니다.

이 예제에서는 Spark 세션을 만들 때 원격 속성을 설정하여(SparkSession.builder.remote...) Spark Connect를 사용하려고 명시적으로 지정하고 있습니다.

Spark Connect를 사용하는 Jupyter 노트북 코드

이 예제에서 사용된 데이터 세트는 여기서 다운로드할 수 있습니다: 음악 아티스트 인기 | Kaggle

다음 예제에서 볼 수 있듯이 Spark Connect를 사용하면 로컬 Spark 클러스터에서 개발 및 테스트한 후 프로덕션의 원격 클러스터로 코드를 이동하는 등 서로 다른 Spark 클러스터 간에 쉽게 전환할 수 있습니다.

이 예제에서는 TEST_ENV 환경 변수를 설정하여 애플리케이션이 사용할 Spark 클러스터와 데이터 위치를 제어하므로 테스트, 스테이징 및 프로덕션 클러스터 간에 전환하기 위해 코드를 변경할 필요가 없습니다.

환경 변수를 사용하여 서로 다른 Spark 클러스터 간 전환

Spark Connect 사용 방법에 대해 자세히 알아보려면 Spark Connect 개요Spark Connect 빠른 시작 페이지를 방문하세요.

Databricks Connect는 Spark Connect를 기반으로 구축되었습니다

Databricks Runtime 13.0부터 Databricks Connect는 오픈 소스 Spark Connect를 기반으로 구축되었습니다. 이 "v2" 아키텍처를 통해 Databricks Connect는 간단하고 사용하기 쉬운 씬 클라이언트가 됩니다. IDE, 노트북 및 모든 애플리케이션에 포함되어 Databricks에 연결할 수 있으므로 고객과 파트너 모두 Databricks Lakehouse를 기반으로 새로운 (대화형) 사용자 경험을 구축할 수 있습니다. 사용하기 매우 쉽습니다. 사용자는 단순히 Databricks Connect 라이브러리를 애플리케이션에 포함하고 Databricks Lakehouse에 연결하기만 하면 됩니다.

Apache Spark 3.4에서 지원되는 API

PySpark: Spark 3.4에서는 Spark Connect가 DataFrame, Functions, Column을 포함한 대부분의 PySpark API를 지원합니다. 지원되는 PySpark API는 API 참조 설명서에 “Spark Connect 지원”으로 표시되어 있으므로, 기존 코드를 Spark Connect로 마이그레이션하기 전에 사용 중인 API를 사용할 수 있는지 확인할 수 있습니다.

Scala: Spark 3.4에서는 Spark Connect가 Dataset, functions, Column을 포함한 대부분의 Scala API를 지원합니다.

스트리밍 지원은 곧 제공될 예정이며, 향후 Spark 릴리스에서 Spark Connect를 위한 더 많은 API를 제공하기 위해 커뮤니티와 협력하기를 기대합니다.

Apache Spark 3.4의 Spark Connect는 PySpark 및 Scala의 DataFrame/Dataset 기반의 모든 애플리케이션에서 Spark에 대한 액세스를 개방하고 향후 다른 프로그래밍 언어를 지원하기 위한 기반을 마련합니다.

간소화된 클라이언트 애플리케이션 개발, Spark 드라이버의 메모리 경합 완화, 클라이언트 애플리케이션에 대한 별도 종속성 관리, 독립적인 클라이언트 및 서버 업그레이드, 단계별 IDE 디버깅, 씬 클라이언트 로깅 및 메트릭을 통해 Spark Connect는 Spark에 대한 액세스를 어디서나 가능하게 합니다.

Spark Connect에 대해 자세히 알아보고 시작하려면 Spark Connect 개요Spark Connect 빠른 시작 페이지를 방문하세요.

(이 글은 AI의 도움을 받아 번역되었습니다. 원문이 궁금하시다면 여기를 클릭해 주세요)

게시물을 놓치지 마세요

관심 있는 카테고리를 구독하고 최신 게시물을 받은편지함으로 받아보세요