안녕하세요 오늘은 BESPIN GLOBAL Data실 한제호님이 작성해주신 ‘Spark 5편 – Spark Connect’에 대해 소개해드리도록 하겠습니다.
목차
1. Spark 모놀리식 아키텍처의 한계
2. Spark Connect 등장 및 방식
3. 기능 테스트
1. Spark 모놀리식 아키텍처의 한계
- Spark의 활용도가 증대되면서 다양한 Application 및 IDE Tool과의 통합 요구사항이 늘어나고 있습니다.
- Spark 기본 아키텍쳐 상에서는 SQL을 제외하고는 원격에서 Spark Cluster에 연결할 수 있는 기본 제공 기능은 없습니다.
- 물론 오픈소스중에 Livy를 활용하면 Rest API와 같은 범용적인 프로토콜을 사용하여 원격에서 연결이 가능하지만 아파치 인큐베이터 프로젝트이기도 하고 아직까지 안정성 측면에서 많은 문제점을 안고 있습니다.

2. Spark Connect 등장 및 방식
- 2022년 7월 Databricks에서 주관하는 Data and AI Summit에서 이러한 문제점을 보안하기 위해 Spark Connect라는 새로운 프로젝트 시작을 발표했습니다.
- 그로부터 약 9개월 후인 2023년 4월 Spark 4.0에 신규 기능으로 Spark Connect가 탑재되었습니다.(https://spark.apache.org/releases/spark-release-3-4-0.html)
- Spark Connect는 Spark Connect API라는 중계 서버를 두고 다양한 Client시스템과 GRPC 기반의 단일화된 범용적인 프로토콜로 통신합니다.

- 제약 사항
- 최신 버전인 Spark 3.4에서만 활용 가능
- python 및 scala 언어에서만 제공
- SparkContext를 및 RDD의 경우 일부 API는 아직 지원하지 않기 때문에 기존방식으로 개발된 경우 코드 이관시 문제가 발생할 수 있습니다.
- 아직 최초 버전이기 때문에 당분간 좀 더 지켜볼 필요가 있을것 같습니다.
3. 기능 테스트
3-1. Server 환경 셋팅
- Spark 4.0 다운로드 : https://www.apache.org/dyn/closer.lua/spark/spark-3.4.0/spark-3.4.0-bin-hadoop3.tgz
- 적절한 위치에 압축 해제

- Spark Connect 서버 실행 및 로그 확인
# 서버 실행
./sbin/start-connect-server.sh --packages org.apache.spark:spark-connect_2.12:3.4.0
# Tail을 통한 실시간 로그 확인
tail -F /Users/jeho.han/Desktop/develop/etc/spark-3.4.0-bin-hadoop3/logs/spark-jeho.han-org.apache.spark.sql.connect.service.SparkConnectServer-1-jehohan-DFXW79V2M6.out
3-2. Client 환경 셋팅
- Anaconda 설치 : https://www.anaconda.com/download
- Conda Env 환경 생성 및 환경 접속
conda create -n spark40 python=3.8.0 -y
conda activate spark40
- Client 모듈 설치
conda install -c anaconda notebook -y
conda install -c conda-forge pyspark=3.4.0 -y
conda install -c conda-forge grpcio=1.49.1 -y
conda install -c conda-forge protobuf -y
conda install -c conda-forge grpcio-status -y
3-3. Spark 코드 수행
- jupyter notebook 환경
- remote 함수내에 원격지의 Spark Connect 서버 주소 입력
- Spark Application 생성 후 spark 객체에 대한 Type을 확인하면 Spark Connect 기반으로 생성된 것을 확인 가능

- SparkUI
- sparkUI를 통해 생성된 Job 및 executor를 확인 할 수 있다.

여기까지 ‘Spark 5편 – Spark Connect’에 대해 소개해드렸습니다. 유익한 정보가 되셨길 바랍니다. 감사합니다.
Written by 한 제호 / Data실
BESPIN GLOBAL