Spark 5편 – Spark Connect

안녕하세요 오늘은 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 Connect는 Spark Connect API라는 중계 서버를 두고 다양한 Client시스템과 GRPC 기반의 단일화된 범용적인 프로토콜로 통신합니다.
  • 제약 사항
    • 최신 버전인 Spark 3.4에서만 활용 가능
    • python 및 scala 언어에서만 제공
    • SparkContext를 및 RDD의 경우 일부 API는 아직 지원하지 않기 때문에 기존방식으로 개발된 경우 코드 이관시 문제가 발생할 수 있습니다.
    • 아직 최초 버전이기 때문에 당분간 좀 더 지켜볼 필요가 있을것 같습니다.

3. 기능 테스트

3-1. Server 환경 셋팅

적절한 위치에 압축 해제
  • 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 환경 셋팅

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 기반으로 생성된 것을 확인 가능
jupyter notebook 환경
  • SparkUI
    • sparkUI를 통해 생성된 Job 및 executor를 확인 할 수 있다.
sparkUI를 통해 생성된 Job 및 executor를 확인 할 수 있다.

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

Written by 한 제호 / Data실

BESPIN GLOBAL