본문으로 건너뛰기

© 2026 Molayo

GH Trending릴리즈2026. 05. 06. 21:14

lakehq/sail

요약

Sail은 Rust로 작성된 Apache Spark의 드롭-인 대체 컴퓨팅 엔진으로, 배치 처리, 스트림 처리 및 AI 워크로드 통합을 지원합니다. Spark Connect 프로토콜과 호환되어 기존 PySpark 코드를 수정할 필요 없이 사용할 수 있으며, JVM 오버헤드가 없어 최대 8배 빠른 성능과 94% 낮은 인프라 비용 절감을 제공합니다. Sail은 CLI, Python API, Kubernetes 등 다양한 배포 옵션을 제공하며, Delta Lake 및 Apache Iceberg와 같은 최신 테이블 형식 지원과 AWS S3, Azure 등 광범위한 스토리지 백엔드를 갖추고 있어 엔터프라이즈급 데이터 처리 요구사항을 충족합니다.

핵심 포인트

  • Rust 기반으로 개발되어 JVM 오버헤드가 없고 메모리 안전성 및 예측 가능한 성능을 제공함.
  • Spark Connect 프로토콜과 완벽하게 호환되므로 기존 PySpark 코드를 수정할 필요가 없음 (Drop-in Replacement).
  • 특정 워크로드에서 최대 8배의 속도 향상과 인프라 비용 94% 절감을 달성하여 높은 효율성을 자랑함.
  • CLI, Python API, Kubernetes 등 다양한 환경에 배포 가능하며 엔터프라이즈급 운영 편의성을 제공함.
  • Delta Lake 및 Apache Iceberg와 같은 최신 테이블 형식 지원과 광범위한 스토리지 백엔드를 통합하여 데이터 처리 범위를 확장함.

Sail 은 Rust 로 작성된 Apache Spark 의 drop-in 대체제로, 분산 멀티모달 컴퓨트 엔진 위에서 배치 처리, 스트림 처리 및 계산 집약적 AI 워크로드를 통합합니다.

Spark Connect 프로토콜과 호환되며 코드 리파일이 필요 없는 Spark SQL 및 DataFrame API 를 지원합니다. 100% Rust-native(JVM 오버헤드 없음)으로 메모리 안전성, 빠른 시작 시간, 예측 가능한 성능을 제공합니다. ~4× 더 빠름(특정 워크로드에서는 최대 8×)이며 인프라 비용은 94% 저렴합니다. derived TPC-H 벤치마크를 확인하세요.ClickBench 에서 검증되어 Spark, 인기 있는 Spark 가속기, Databricks, Snowflake 를 능가합니다.

최신 Sail 버전의 문서는 여기에서 확인할 수 있습니다.

Sail 은 PyPI 에 Python 패키지로 제공되며, Python 환경에 PySpark 와 함께 설치할 수 있습니다.

pip install pysail
pip install "pyspark-client"

특정 하드웨어 아키텍처를 위한 성능 최적화를 위해 Sail 을 소스에서 설치할 수 있습니다. 자세한 설치 가이드는 이 과정을 단계별로 안내합니다.

Sail 을 프로덕션 환경에 배포해야 하는 경우, Deployment Guide 는 Kubernetes 클러스터 및 기타 인프라 구성에서 Sail 을 배포하는 데 대한 포괄적인 지침을 제공합니다.

Option 1: Command Line Interface. sail 명령어를 사용하여 로컬 Sail 서버를 시작할 수 있습니다.

sail spark server --port 50051

Option 2: Python API. Python API 를 사용하여 로컬 Sail 서버를 시작할 수 있습니다.

from pysail.spark import SparkConnectServer
server = SparkConnectServer(port=50051)
server.start(background=False)

Option 3: Kubernetes. Kubernetes 에 Sail 을 배포하고 분산 처리를 위해 클러스터 모드로 Sail 을 실행할 수 있습니다. Docker 이미지 빌딩 및 Kubernetes manifest YAML 파일 작성에 대한 지침은 Kubernetes Deployment Guide 를 참조하세요.

kubectl apply -f sail.yaml
kubectl -n sail port-forward service/sail-spark-server 50051:50051

Sail 서버가 실행 중일 경우, PySpark 로 연결할 수 있습니다. PySpark 코드에는 변경 사항이 필요 없습니다!

from pyspark.sql import SparkSession
spark = SparkSession.builder.remote("sc://localhost:50051").getOrCreate()
spark.sql("SELECT 1 + 1").show()

자세한 내용은 Getting Started 가이드를 참조하세요.

Sail 은 Spark 3.5.x, Spark 4.x 및 최신 버전과 호환되도록 설계되었습니다. Spark Connect 프로토콜을 통해 Sail 과 연결하면 기존 PySpark 코드가 바로 작동합니다.

시작점으로, Sail 은 실험적 PySpark 함수 호환성 확인 스크립트를 제공하여 코드베이스를 스캔하고 PySpark 함수의 Sail 지원 상태를 보고합니다.

python -m pysail.examples.spark.compatibility_check <directory>

실험적 사용: 이 스크립트는 대략적인 첫 번째 통과용으로만 사용하세요. 스크립트는 참조된 PySpark 함수가 Sail 에서 구현되었는지 확인합니다. 동작 패리티를 검증하지 않습니다. DataFrame 작업에서 사용되는 함수를 찾지만 Spark SQL 문자열을 포함하지 않습니다.

이동 가이드를 참조하여 권장 이동 관행을 확인하세요.

Sail 은 Delta Lake 및 Apache Iceberg 테이블 형식에 대한 네이티브 지원을 제공합니다. Apache Iceberg REST Catalog, AWS Glue, Unity Catalog, Hive Metastore, Microsoft OneLake 를 포함한 카탈로그 제공자와 통합됩니다.

사용법 및 모범 사례에 대한 자세한 내용은 Data Sources Guide 와 Catalog Guide 를 참조하세요.

Sail 은 데이터 읽기 및 작성을 위한 다양한 스토리지 백엔드를 지원합니다:

  • AWS S3
  • Azure
  • Hugging Face
  • Cloudflare R2
  • Google Cloud Storage
  • HDFS
  • File systems
  • HTTP/HTTPS
  • In-memory storage

Storage Guide 를 참조하여 자세한 내용을 확인하세요.

15 년 이상 Spark 는 분산 데이터 처리의 기본 엔진으로, 거의 모든 산업에서 ETL, 머신 학습, 분석 파이프라인을 구동해 왔습니다.

Spark 가 가능하게 만든 JVM 기반이 이제 그 발전을 저해하는 요소가 되었습니다. Sail 은 JVM 과세를 피하면서도 친숙하고 성능 좋은 대안을 제공합니다.

Sail 은 Spark SQL 및 Spark DataFrame API 의 드롭-인 대체품입니다. Spark Connect 프로토콜을 통해 Spark 클라이언트 세션을 Sail 과 연결하면 기존 PySpark 코드가 바로 작동합니다.

Spark SQL Dialect Support. 커스텀 Rust 파서 (parser combinators 와 Rust procedural macros 로 구축됨) 가 생산 환경 수준의 정확도로 Spark SQL 문법을 지원합니다.DataFrame API Support. Spark DataFrame 연산은 Sail 에서 동일한 의미론으로 실행됩니다.Python UDF, UDAF, UDWF, 및 UDTF Support. Python, Pandas, Arrow UDF 는 모두 Spark 와 동일한 관례를 따릅니다.

Rust-Native Engine. garbage collection 지연 시간 없음, JVM 메모리 튜닝 필요 없음, 낮은 메모리 발자국입니다.Columnar Format and Vectorized Execution. Apache Arrow 와 Apache DataFusion 를 기반으로 하여 컬럼형 인메모리 형식과 SIMD 명령어는 놀라운 속도로 쿼리 실행을 가능하게 합니다.Lightning-Fast Python UDFs. Arrow 배열 포인터가 0 복사 데이터 공유를 가능하게 하여 Python 코드가 Sail 내부에서 0 serialization 오버헤드로 실행됩니다.Performant Data Shuffling. Workers 는 Arrow 컬럼형 데이터를 직접 교환하여 조인 및 집계 비용이 최소화된 shuffle 비용을 줄입니다.Lightweight, Stateless Workers. Workers 는 초 단위로 시작하며 대기 시 몇 메가바이트의 메모리만 소비하고 클라우드 비용을 절감하고 운영을 단순화하기 위해 탄력적으로 확장됩니다.Concurrency and Memory Safety You Can Trust. Rust 의 소유권 모델은 null 포인터, 경쟁 조건 및 안전하지 않은 메모리 접근을 방지하여 신뢰할 수 있는 무결성을 제공합니다.

기존 워크로드를 가져오려는 준비가 되셨나요? Migration Guide 를 통해 방법을 확인하세요.

Derived TPC-H 결과에 따르면 Sail 은 모든 쿼리에서 Apache Spark 를 능가합니다:

Execution Time: 다양한 SQL 워크로드에서 약 4 배 빠릅니다.Hardware Cost: 시그니픽턴트하게 낮은 피크 메모리 사용량과 0 shuffle spill 로 하드웨어 비용을 94% 절감합니다.

MetricSparkSail
Total Query Time387.36 s102.75 s
...

이 결과는 AWS r8g.4xlarge 인스턴스에서 Derived TPC-H 벤치마크 (22 쿼리, scale factor 100, Parquet 형식) 에서 비롯됩니다.

Full analysis 및 graphs 를 Benchmark Results 페이지에서 확인하세요.

  • Architecture – Sail 의 로컬 및 클러스터 모드를 위한 설계 개요 및 두 모드 간 원활한 전환 방법.
  • Query Planning – Sail 이 SQL 과 Spark relations 를 파싱하고 논리적 및 물리적 계획을 구축하며 실행을 처리하는 상세 설명 (로컬 및 클러스터 모드).
  • SQL and DataFrame Features – Spark SQL 과 DataFrame API 호환성을 위한 완전한 참조.
  • LakeSail Blog – Sail 릴리스, 벤치마크 및 기술 인사이트 업데이트.

AI 자동 생성 콘텐츠

본 콘텐츠는 GitHub Trending Rust (weekly)의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.

원문 바로가기
2

댓글

0