Microsoft Fabric Runtime は、Apache Spark に基づく Azure 統合プラットフォームであり、データ エンジニアリングとデータ サイエンスのエクスペリエンスの実行と管理を可能にします。 内部ソースとオープンソースの両方の主要コンポーネントを組み合わせ、包括的なソリューションを顧客に提供します。 わかりやすくするために、Apache Spark を利用する Microsoft Fabric Runtime のことを Fabric Runtime と呼びます。
Fabric Runtime の主なコンポーネントは以下のとおりです。
Apache Spark - 大規模なデータ処理と分析タスクを可能にする強力なオープンソースの分散コンピューティング ライブラリです。 Apache Spark は、データ エンジニアリングとデータ サイエンスのエクスペリエンスに適した、汎用的で高パフォーマンスのプラットフォームを提供します。
Delta Lake - ACID トランザクションやその他のデータ信頼性機能を Apache Spark に提供するオープンソースのストレージ レイヤー。 Fabric Runtime 内に統合された Delta Lake は、データ処理機能を強化し、複数の同時実行操作間でデータの一貫性を確保します。
ネイティブ実行エンジン - Apache Spark ワークロードの変革的な拡張機能であり、レイクハウス インフラストラクチャで Spark クエリを直接実行してパフォーマンスを大幅に向上させます。 シームレスに統合され、コード変更が不要で、ベンダーのロックインを回避できるほか、ランタイム 1.3 (Spark 3.5) で Apache Spark API 全体にわたって Parquet 形式と Delta 形式の両方をサポートしています。 このエンジンは、TPC-DS 1TB ベンチマークで示されているように、従来の OSS Spark の 4 倍の速度でクエリを実行できるようにし、運用コストを削減します。また、データ インジェスト、ETL、分析、対話型クエリなど、さまざまなデータ タスクの効率を向上させます。 Meta の Velox と Intel の Apache Gluten に基づいて構築され、多様なデータ処理シナリオを処理しながらリソースの使用を最適化します。
デフォルトレベルの Java/Scala、Python、R 用のパッケージ - さまざまなプログラミング言語と環境をサポートするパッケージ。 これらのパッケージは自動的にインストールおよび構成されるため、開発者はデータ処理タスクに好みのプログラミング言語を適用できます。
Microsoft Fabric Runtime は堅牢なオープンソース オペレーティング システムに基づいて構築されているので、さまざまなハードウェア構成やシステム要件との互換性が確保されます。
Microsoft Fabric プラットフォーム内の Apache Spark ベースのランタイムについて、Apache Spark のバージョン、サポートされるオペレーティング システム、Java、Scala、Python、Delta Lake、R などの主要コンポーネントの包括的な比較を次に示します。
ヒント
運用環境のワークロード (現在は Runtime 1.3) には、最新の一般公開 (GA) ランタイム バージョンを常に使用します。
| コンポーネント | ランタイム 1.2 | ランタイム 1.3 | ランタイム 2.0 |
|---|---|---|---|
| リリース ステージ | EOSA | GA | 試験段階 (プレビュー) |
| Apache Spark のバージョン | 3.4.1 | 3.5.5 | 4.0.0 |
| オペレーティング システム | マリナー 2.0 | マリナー 2.0 | マリナー 3.0 |
| Java バージョン | 11 | 11 | 21 (二十一) |
| Scala バージョン | 2.12.17 | 2.12.17 | 2.13.16 |
| Python のバージョン | 3.10 | 3.11 | 3.12.11 |
| Delta Lake バージョン | 2.4.0 | 3.2 | 4.0.0 |
ランタイム 1.2、ランタイム 1.3、またはランタイム 2.0 にアクセスして、特定のランタイム バージョンの詳細、新機能、機能強化、移行シナリオを確認してください。
Fabric の最適化
Microsoft Fabric では、Spark エンジンと Delta Lake の両方の実装にプラットフォーム固有の最適化と機能が組み込まれています。 これらの機能は、プラットフォーム内でネイティブ統合を使うように設計されています。 標準の Spark と Delta Lake の機能を実現するために、これらの機能はすべて無効にできることに注意してください。 Apache Spark 用 Fabric Runtime には、以下が含まれます。
- Apache Spark の完全なオープンソース バージョン。
- 約 100 個の組み込みの個別のクエリ パフォーマンスに関する機能強化のコレクション。 これらの機能強化には、パーティション キャッシュ (FileSystem パーティション キャッシュを有効にしてメタストアの呼び出しを減らす) や、スカラー サブクエリのプロジェクションへのクロス結合などの機能があります。
- 組み込みのインテリジェント キャッシュ。
Apache Spark と Delta Lake 用 Fabric Runtime 内には、2 つの重要な目的を果たすネイティブ ライター機能があります。
- これらは書き込みワークロードに対して差別化されたパフォーマンスを提供し、書き込みプロセスを最適化します。
- デフォルトでは、Delta Parquet ファイルの V オーダー最適化が行われます。 Delta Lake の V オーダーの最適化は、すべての Fabric エンジンで優れた読み取りパフォーマンスを実現するために不可欠です。 その動作のしくみと管理方法についてより深く理解するには、「Delta Lake テーブルの最適化と V オーダー」の専門の記事を参照してください。
複数のランタイムのサポート
Fabric は複数のランタイムをサポートし、ユーザーがそれらをシームレスに切り替えられる柔軟性を提供し、非互換性や中断のリスクを最小限に抑えます。
既定では、すべての新しいワークスペースで最新の GA ランタイム バージョン (現在は Runtime 1.3) が使用されます。
ワークスペース レベルでランタイム バージョンを変更するには、Data Engineering/Science
この変更を行うと、Lakehouse 、SJD、ノートブックなど、ワークスペース内にシステムによって作成されたすべての項目は、次の Spark Session から新しく選ばれたワークスペースレベルのランタイム バージョンを使って機能するようになります。 ジョブまたはLakehouse 関連のアクティビティに既存のセッションを含むノートブックを現在使っている場合、その Spark セッションはそのまま続行されます。 ただし、次のセッションまたはジョブから、選んだランタイム バージョンが適用されます。
さらに、Environment 項目レベルでランタイムを変更するには、新しい 環境 項目を作成するか、既存の項目を開き、[ ランタイム ] ドロップダウンで使用可能なオプションから目的のランタイム バージョンを選択し、Save を選択して変更を Publish します。 次に、EnvironmentまたはNotebookでこのSpark Job Definition項目を使用できます。
Spark 設定でのランタイム変更の結果
Microsoft は、一般に、すべての Spark 設定を移行することを目指しています。 ただし、Spark の設定がランタイム B と互換性がないことが判明した場合は、警告メッセージを発行し、その設定が実装されないようにしています。
ランタイムの変更がライブラリ管理に及ぼす影響
一般に、Microsoft のアプローチは、パブリック ランタイムとカスタム ランタイムの両方を含むすべてのライブラリをランタイム A からランタイム B に移行することです。 Python と R のバージョンが変更されていない場合、ライブラリは正しく機能するはずです。 ただし、Jar の場合、依存関係の変更や、Scala、Java、Spark、オペレーティング システムの変更など、その他の要因によって動作しない可能性が非常に高くなります。
ランタイム B で動作しないライブラリの更新または置換は、ユーザーが行う必要があります。競合が発生した場合(つまり、ランタイム B にランタイム A で最初に定義されたライブラリが含まれている)、ライブラリ管理システムは、ユーザーの設定に基づいてランタイム B に必要な依存関係を作成しようとします。 ただし、競合が発生した場合、ビルド プロセスは失敗します。 エラー ログでは、競合の原因となっているライブラリを確認し、使用中のバージョンや仕様を調整できます。
Delta Lake プロトコルをアップグレードする
Delta Lake の機能は常に下位互換性があるため、Delta Lake の下位バージョンで作成されたテーブルは上位バージョンとシームレスに対話できます。 ただし、特定の機能が有効になっている場合 (たとえば、 delta.upgradeTableProtocol(minReaderVersion, minWriterVersion) メソッドを使用すると、下位の Delta Lake バージョンとの前方互換性が損なわれる可能性があります。 そのような場合、互換性を維持する Delta Lake バージョンに合わせるために、アップグレードされたテーブルを参照するワークロードを変更することが重要です。
各 Delta テーブルは、サポートする機能を定義するプロトコル仕様に関連付けられています。 読み取りまたは書き込みのためにテーブルと対話するアプリケーションは、このプロトコル仕様に依存して、テーブルの機能セットと互換性があるかどうかを判断します。 テーブルのプロトコルでサポートされている機能を処理する機能がアプリケーションに不足している場合、そのテーブルから読み取ったり書き込んだりすることはできません。
プロトコル仕様は、"読み取り" プロトコルと "書き込み" プロトコルの 2 つの異なるコンポーネントに分かれています。 詳細については、「 Delta Lake で機能の互換性を管理する方法」のページを参照してください。
ユーザーは PySpark 環境、Spark SQL、Scala 内でコマンド delta.upgradeTableProtocol(minReaderVersion, minWriterVersion) を実行できます。 このコマンドにより、Delta テーブルの更新を開始することができます。
このアップグレードを実行するとき、Delta プロトコル バージョンのアップグレードは非可逆的なプロセスであることを示す警告がユーザーに表示されることに注意してください。 つまり、更新が実行されると、元に戻すことはできません。
プロトコル バージョンのアップグレードは、既存の Delta Lake テーブル リーダー、ライター、またはその両方の互換性に影響する可能性があります。 そのため、Delta Lake に新機能を採用する場合など、必要な場合にのみ、慎重にプロトコル バージョンをアップグレードすることをお勧めします。
Important
すべての Microsoft Fabric エクスペリエンスで互換性のあるプロトコルのバージョンと機能の詳細については、 Delta Lake テーブル形式の相互運用性に関するページを参照してください。
さらに、ユーザーは、シームレスな移行を確実にし、潜在的な中断を防ぐために、現在と将来のすべての運用環境ワークロードとプロセスが、新規プロトコル バージョンを使っている Delta Lake テーブルと互換性があることを確認する必要があります。