Fabric 내 Apache Spark 런타임

Microsoft Fabric 런타임은 데이터 엔지니어링 및 데이터 과학 환경을 실행하고 관리할 수 있도록 하는 Apache Spark를 기반으로 하는 Azure 통합 플랫폼입니다. 내부 및 오픈 소스 소스의 주요 구성 요소를 결합하여 고객에게 포괄적인 솔루션을 제공합니다. 간단히 하기 위해 Apache Spark로 구동되는 Microsoft Fabric Runtime을 Fabric Runtime으로 참조하세요.

Fabric 런타임의 주요 구성 요소:

  • Apache Spark - 대규모 데이터 처리 및 분석 작업을 가능하게 하는 강력한 오픈 소스 분산 컴퓨팅 라이브러리입니다. Apache Spark는 데이터 엔지니어링 및 데이터 과학 환경을 위한 다재다능하고 고성능 플랫폼을 제공합니다.

  • Delta Lake - Apache Spark에 ACID 트랜잭션 및 기타 데이터 안정성 기능을 제공하는 오픈 소스 스토리지 계층입니다. Fabric 런타임 내에 통합된 Delta Lake는 데이터 처리 기능을 향상시키고 여러 동시 작업에서 데이터 일관성을 보장합니다.

  • 네이티브 실행 엔진 - Apache Spark 워크로드에 혁신적인 개선 기능으로, 레이크하우스 인프라에서 직접 Spark 쿼리를 실행함으로써 상당한 성능 향상을 제공합니다. 매끄럽게 통합되어 코드 변경이 필요 없고 벤더 고정 장치를 피합니다. Runtime 1.3(Spark 3.5)과 Runtime 2.0(Spark 4.1)에서 Apache Spark API 전반에 걸쳐 Parquet과 Delta 포맷을 모두 지원합니다.

    지원되는 연산자는 Apache 글루텐 및 Velox를 통해 JVM 기반 Spark에서 벡터화된 C++ 실행 경로로 오프로드되어 Parquet 및 Delta 형식에 대한 기본 지원을 통해 열 형식의 SIMD 가속 처리를 제공합니다. 연산자가 지원되지 않으면 실행이 자동으로 JVM 기반 Spark로 대체됩니다. 대표 벤치마크(델타를 사용하는 배율 1000에서TPC-DS)에서 엔진은 오픈 소스 Spark에 비해 최대 6배 더 빠른 성능을 달성하여 고정 크기 패브릭 클러스터에서 약 83% 컴퓨팅 비용을 절감했습니다.

    네이티브 경로는 적응 쿼리 실행, 비용 기반 다시 쓰기, 열 정리 및 조건자 푸시다운을 포함하여 Fabric Spark 쿼리 최적화를 유지합니다. 구성을 통해 spark.native.enabled 애플리케이션별로 네이티브 실행을 전환할 수 있습니다. Notebook 셀을 실행하는 동안 Fabric Spark Advisor는 실행이 JVM 기반 Spark로 되돌아가면 실시간 경고를 표시하여 네이티브 오프로드가 적용되지 않는 시기를 진단하는 데 도움이 됩니다.

  • Java/Scala, Python 및 R에 대한 기본 수준 패키지 - 다양한 프로그래밍 언어 및 환경을 지원하는 패키지입니다. 이러한 패키지는 자동으로 설치 및 구성되므로 개발자는 데이터 처리 작업에 기본 프로그래밍 언어를 적용할 수 있습니다.

  • Microsoft Fabric 런타임은 강력한 오픈 소스 운영 체제를 기반으로 구축되어 다양한 하드웨어 구성 및 시스템 요구 사항과의 호환성을 보장합니다.

다음 표에서는 Microsoft Fabric 플랫폼 내 Apache Spark 기반 런타임의 Apache Spark 버전, 지원되는 운영체제, Java, Scala, Python, Delta Lake, R 등 주요 구성 요소들을 종합적으로 비교한 내용을 제공합니다.

현재 런타임 1.3인 프로덕션 워크로드에 항상 가장 최근의 GA(일반 공급) 런타임 버전을 사용합니다.

구성 요소 런타임 1.3 런타임 2.0
릴리스 단계 조지아 공개 미리 보기
Apache Spark 버전 3.5.5 4.1
운영 체제 마리너 2.0 마리너 3.0
Java 버전 11 21
Scala 버전 2.12.17 2.13.16
Python 버전 3.11 3.13
Delta Lake 버전 3.2 4.2

런타임 1.3 또는 런타임 2.0을 방문하여 특정 런타임 버전에 대한 세부 정보, 새로운 기능, 개선 사항 및 마이그레이션 시나리오를 살펴봅니다.

패브릭 최적화

Microsoft Fabric에서 Spark 엔진과 Delta Lake 구현 모두 플랫폼별 최적화 및 기능을 통합합니다. 이 기능들은 플랫폼 내 네이티브 통합을 사용합니다. 이 모든 기능을 비활성화하면 표준 Spark와 Delta Lake 기능을 구현할 수 있습니다. Apache Spark용 Fabric 런타임은 다음을 포함합니다.

  • Apache Spark의 전체 오픈 소스 버전입니다.
  • 거의 100개의 기본 제공 고유 쿼리 성능 향상의 컬렉션입니다. 이러한 향상된 기능에는 파티션 캐싱(FileSystem 파티션 캐시를 사용하여 메타스토어 호출을 줄일 수 있도록 설정) 및 스칼라 하위 쿼리의 프로젝션에 대한 교차 조인과 같은 기능이 포함됩니다.
  • 기본 제공 지능형 캐시입니다.

Apache Spark와 Delta Lake의 Fabric Runtime 내에서 네이티브 라이터 기능은 두 가지 주요 목적을 수행합니다:

  • 쓰기 작업을 위한 차별화된 성능을 제공하여 쓰기 프로세스를 최적화합니다.
  • 기본값은 Delta Parquet 파일의 V-Order 최적화입니다. Delta Lake V-Order 최적화는 모든 Fabric 엔진에서 뛰어난 읽기 성능을 제공하는 데 매우 중요합니다. 작동 방식과 관리 방법에 대해 더 깊이 이해하려면 델타 레이크 테이블 최적화와 V-Order를 참고하세요.

다중 런타임 지원

Fabric은 여러 런타임을 지원하므로 이를 전환하여 호환성 문제나 중단 위험을 줄일 수 있습니다.

Note

Spark 런타임에는 컴포넌트 세트의 일부로 특정 Python 버전이 포함되어 있습니다. 예를 들어, Runtime 1.3에는 Python 3.11이 포함되어 있습니다. 이 Python 버전은 순수 Python 노트북용으로 선택하는 Python 노트북 커널과는 별개입니다. Python 노트북 커널 수명 주기에 대해서는 Python 노트북 런타임 및 커널 수명주기 in Fabric을 참조하세요.

기본적으로 모든 새 작업 영역은 현재 런타임 1.3인 최신 GA 런타임 버전을 사용합니다.

작업 영역 수준에서 런타임 버전을 변경하려면 데이터 엔지니어링/과학Spark 설정작업 영역 설정으로 이동합니다. 환경 탭의 사용 가능한 옵션에서 원하는 런타임 버전을 선택합니다. 저장을 선택하여 선택 항목을 확인합니다.

작업 영역 설정에 대한 런타임 버전을 선택할 위치를 보여 주는 스크린샷

이 변경 후에는 Lakehouse, SJD, Notebook을 포함한 작업 공간 내 모든 시스템 생성 항목이 다음 Spark 세션부터 새로 선택된 작업 공간 수준의 런타임 버전을 사용합니다. 현재 노트북과 함께 작업이나 호숫가 관련 활동으로 기존 세션을 사용하고 있다면, 그 Spark 세션은 그대로 계속됩니다. 하지만 다음 세션이나 작업부터는 선택된 런타임 버전이 적용됩니다.

아이템 레벨에서 Environment 런타임을 변경하려면 새로운 환경 항목을 생성하거나 기존 항목을 열면 됩니다. 런타임 드롭다운에서 사용하려는 런타임 버전을 사용 가능한 옵션에서 선택한 다음 Save을(를) 선택하고, 변경 사항을 Publish하세요. 다음으로, 이 Environment 항목을 사용자 Notebook 또는 Spark Job Definition.와 함께 사용할 수 있습니다.

환경 항목에 대한 런타임 버전을 선택할 위치를 보여 주는 스크린샷

Spark 설정에서 런타임 변경의 결과

시스템이 모든 Spark 설정을 이전합니다. 하지만 시스템이 Spark 설정이 런타임 B와 호환되지 않는다고 인식하면 경고 메시지가 뜨고 설정을 구현하지 않습니다.

Spark 설정 런타임 변경.

라이브러리 관리에 대한 런타임 변경의 결과

라이브러리 관리 시스템은 공개 및 커스텀 런타임을 포함하여 런타임 A에서 런타임 B로 모든 라이브러리를 마이그레이션합니다. Python과 R 버전이 동일하다면 라이브러리가 제대로 작동합니다. 하지만 JAR의 경우, 의존성 변화나 Scala, Java, Spark, 운영체제 등 다른 요인들로 인해 작동하지 않을 가능성이 큽니다.

Runtime B와 호환되지 않는 라이브러리는 업데이트하거나 교체할 책임이 있습니다. 만약 충돌이 발생하면, 즉 런타임 B에 원래 런타임 A에서 정의된 라이브러리가 포함되어 있다면, 라이브러리 관리 시스템은 당신의 설정에 따라 런타임 B에 필요한 의존성을 생성하려고 합니다. 그러나 충돌이 발생하면 빌드 프로세스가 실패합니다. 오류 로그에서 어떤 라이브러리가 충돌을 일으키는지 확인하고 버전이나 사양을 조정할 수 있습니다.

라이브러리 관리 런타임 변경.

Delta Lake 프로토콜 업그레이드

델타 레이크 기능은 항상 하위 호환이 가능하여, 하위 델타 레이크 버전에서 생성된 테이블이 상위 버전과 원활하게 상호작용할 수 있도록 보장합니다. 하지만 특정 기능을 활성화하면(예: 이 메서드를 사용 delta.upgradeTableProtocol(minReaderVersion, minWriterVersion) 해) 하위 Delta Lake 버전과의 순방향 호환성이 저하될 수 있습니다. 이런 경우에는 업그레이드된 테이블을 참조하는 워크로드를 호환성을 유지하는 Delta Lake 버전과 일치하도록 수정해야 합니다.

각 델타 테이블은 지원하는 기능을 정의하는 프로토콜 명세와 연관되어 있습니다. 읽기 또는 쓰기를 위해 테이블과 상호 작용하는 애플리케이션은 이 프로토콜 사양을 사용하여 테이블의 기능 집합과 호환되는지 확인합니다. 애플리케이션이 테이블 프로토콜에 지원된 기능을 처리할 능력이 없으면, 해당 테이블에서 읽거나 쓸 수 없습니다.

프로토콜 사양은 "읽기" 프로토콜과 "쓰기" 프로토콜의 두 가지 고유한 구성 요소로 나뉩니다. 자세한 내용은 '델타 레이크가 기능 호환성을 어떻게 관리하는가?'를 참고하세요.

upgradeTableProtocol 메서드를 사용할 때 즉각적인 경고를 표시하는 GIF입니다.

이 명령 delta.upgradeTableProtocol(minReaderVersion, minWriterVersion) 어는 PySpark 환경에서, Spark SQL과 Scala에서도 실행할 수 있습니다. 이 명령어는 델타 테이블에 업데이트를 시작합니다.

이 업그레이드를 수행하면 Delta 프로토콜 버전 업그레이드가 되돌릴 수 없는 과정임을 경고합니다. 이 과정은 업데이트를 실행하면 되돌릴 수 없다는 뜻입니다.

프로토콜 버전 업그레이드는 기존 Delta Lake 테이블 판독기, 기록기 또는 둘 다의 호환성에 영향을 줄 수 있습니다. 따라서 Delta Lake에서 새로운 기능을 도입할 때와 같이 필요한 경우에만 프로토콜 버전을 업그레이드하시기 바랍니다.

중요합니다

모든 Microsoft Fabric 경험에서 호환되는 프로토콜 버전과 기능에 대해 더 알고 싶으시다면, Delta Lake 테이블 형식 상호운용성을 참조하세요.

Delta Lake 프로토콜을 업그레이드할 때의 경고를 보여 주는 스크린샷

또한, 모든 현재 및 미래의 생산 작업 부하와 프로세스가 새로운 프로토콜 버전을 사용하는 Delta Lake 테이블과 호환되는지 확인하여 원활한 전환을 보장하고 잠재적인 중단을 방지하세요.