Azure Synapse ランタイム

Azure Synapse の Apache Spark プールでは、ランタイムを使用して、必須コンポーネントのバージョン (Azure Synapse の最適化、パッケージ、コネクタ など) を特定の Apache Spark のバージョンに結び付けます。 各ランタイムは、新しい機能強化、機能、パッチを含むように定期的にアップグレードされます。 サーバーレス Apache Spark プールを作成するときに、対応する Apache Spark バージョンを選択します。 これに基づいて、プールには、関連付けられているランタイム コンポーネントとパッケージがプレインストールされています。

ランタイムには、次の利点があります。

  • セッションの起動時間の短縮
  • 特定の Apache Spark のバージョンとの互換性をテスト済み
  • 互換性のある一般的なコネクタとオープンソース パッケージへのアクセス

サポートされている Azure Synapse ランタイム リリース

次の表は、サポートされている Azure Synapse ランタイムのリリースのランタイム名、Apache Spark のバージョン、リリース日をまとめたものです。

ランタイム名 リリース日 リリース ステージ サポート終了発表日 支援終了発効日
Azure Synapse Runtime for Apache Spark 3.5 2025 年 10 月 13 日 GA;LTSは2027年11月1日から開始 2027 年 10 月 31 日 2028年10月31日
Azure Synapse Runtime for Apache Spark 3.4 2023 年 11 月 21 日 非推奨になり、間もなく無効になる予定です 2025 年 4 月 30 日 2026 年 3 月 31 日
Azure Synapse Runtime for Apache Spark 3.3 2022 年 11 月 17 日 非推奨になり、間もなく無効になる予定です 2024 年 7 月 12 日 2025 年 3 月 31 日

重要

Azure Synapse Runtime for Apache Spark 3.5は、2027年11月1日に長期サポート(LTS)を開始し、12か月間の期間を経て、2028年10月31日までサポートを延長します。 私たちはお客様に、パフォーマンス、安定性、セキュリティの大幅な向上が見られるFabric Runtime 2.0への移行を推奨しています。これはApache Spark 4.1とDelta Lake 4.2を含み、一般的に利用可能です。

ランタイム リリース ステージ

Apache Spark ライフサイクルとサポート ポリシーの完全なランタイムについては、「Apache Spark のライフサイクルとサポート可能性のための Synapse ランタイム」を参照してください。

ランタイムのパッチ適用

Apache Spark パッチ用の Azure Synapse ランタイムは、Apache Spark コア エンジン、言語環境、コネクタ、ライブラリに対するバグ、機能、およびセキュリティ修正を含む毎月ロールアウトされます。

  • メンテナンスの更新プログラムは、指定されたサーバーレス Apache Spark プールの新しいセッションに自動的に適用されます。
  • 新しいランタイム バージョンを使用する場合は、アプリケーションが正常に動作するかどうかをテストして検証する必要があります。

重要

Log4j 1.2.x セキュリティ パッチ

オープンソースの Log4j ライブラリ バージョン 1.2.x には、こちらで説明するように、既知の CVE (共通脆弱性識別子) がいくつか含まれています。

すべての Synapse Spark プール ランタイムで、CVE への対策として Log4j 1.2.17 JAR にパッチを適用しました。対象になるのは、CVE-2019-1751、CVE-2020-9488、CVE-2021-4104、CVE-2022-23302、CVE-2022-2330、CVE-2022-23307 です

適用されたパッチは、脆弱性を引き出すために必要となる、次のファイルを削除することで機能します。

  • org/apache/log4j/net/SocketServer.class
  • org/apache/log4j/net/SMTPAppender.class
  • org/apache/log4j/net/JMSAppender.class
  • org/apache/log4j/net/JMSSink.class
  • org/apache/log4j/jdbc/JDBCAppender.class
  • org/apache/log4j/chainsaw/*

上記のクラスは Synapse の既定の Log4j 構成では使用されませんでしたが、一部のユーザー アプリケーションがそれに依存している可能性があります。 アプリケーションでこれらのクラスを使用する必要がある場合は、ライブラリ管理を使用して、安全なバージョンの Log4j を Spark プールに追加してください。 Log4j バージョン 1.2.17 は使用しないでください。脆弱性が再び取り込まれてしまうためです。

パッチ ポリシーは、ランタイム ライフサイクル ステージによって異なります。

  • 一般公開 (GA) ランタイム: メジャー バージョン (つまり、3.x -> 4.x) のアップグレードは受け取られません。 また、非推奨または回帰の影響がない限り、マイナー バージョン (つまり、3.x -> 3.y) をアップグレードします。

  • プレビュー ランタイム: 厳密な必要性がない限り、メジャー バージョンのアップグレードはありません。 マイナー バージョン (3.x -> 3.y) は、ランタイムに最新の機能を追加するためにアップグレードされます。

  • 長期サポート (LTS) ランタイムには、セキュリティ修正プログラムのみが適用されます。

  • サポート終了の発表されたランタイムには、バグと機能の修正はありません。 セキュリティ修正プログラムは、リスク評価に基づいてバックポートされます。

Apache Spark バージョン間の移行 - サポート

このガイドは、Azure Synapse for Apache Sparkワークロードを最新のサポートされているAzure Synapseランタイム(3.5など)にアップグレードしたいユーザー向けに、構造化されたアプローチを提供します。 最新バージョンにアップグレードすると、ユーザーはパフォーマンスの強化、新機能、および強化されたセキュリティ対策の恩恵を受けることができます。 互換性のない機能や非推奨の機能が原因で、より高いバージョンに移行するには、既存の Spark コードの調整が必要になる場合があることに注意してください。

手順 1: 評価と計画

  • 相性を評価する: まずはApache Sparkの移行ガイドを確認し、現在のSparkバージョンとターゲットバージョン(例:3.5)間で潜在的な互換性の問題、非推奨機能、新しいAPIを特定しましょう。
  • Codebase の分析: Spark コードを慎重に調べて、非推奨または変更された API の使用を特定します。 アップグレードの影響を受ける可能性がある SQL クエリとユーザー定義関数 (UDF) に特に注意してください。

手順 2: テスト用の新しい Spark プールを作成する

  • Azure Synapse で新しいプール: を作成し、[Spark プール] セクションに移動し、新しい Spark プールを設定します。 ターゲットとなるSparkバージョン(例:3.5)を選択し、パフォーマンス要件に応じて設定してください。
  • Sparkプールの設定: 新しいSparkプールのすべてのライブラリと依存関係がSpark 3.5と互換性のあるよう更新または置き換えられていることを確認してください。

手順 3: コードを移行してテストする

  • 移行コード: Apache Spark 3.5の新設または改訂されたAPIに準拠するようにコードを更新してください。 これには、Apache Spark の公式ドキュメントで詳しく説明されているように、非推奨の関数に対処し、新機能を採用する必要があります。
  • 開発環境でテストする: ローカルではなく、Azure Synapse の開発環境内で更新されたコードをテストします。 この手順は、運用環境に移行する前に問題を特定して修正するために不可欠です。
  • 展開と監視: 開発環境での徹底的なテストと検証の後、新しいSpark 3.5プールにアプリケーションを展開します。 予期しない動作がない場合は、アプリケーションを監視することが重要です。 Azure Synapse で使用できる監視ツールを利用して、Spark アプリケーションのパフォーマンスを追跡します。

質問: 3.X に移行するには、どのような手順を実行する必要がありますか?

回答:Apache Spark 移行ガイドを参照してください

質問: ライブラリがアタッチされているときに、PowerShell コマンドレットを使用して Spark プール ランタイムをアップグレードしようとしたときにエラーが発生しました。

回答: Synapse ワークスペースにカスタム ライブラリがインストールされている場合は、PowerShell コマンドレットを使用しないでください。 代わりに、次の手順に従います。

  1. Spark プールを一から再作成します。
  2. 現在のSpark Poolをダウングレードし、付属しているパッケージをすべて削除し、再度最新の対応Azure Synapseランタイム(3.5など)にアップグレードしてください

質問: なぜ新しいSparkプールを作らないと3.5にアップグレードできないのですか?

回答: UX からは許可されていません。お客様は Azure PowerShell を使用して Spark のバージョンを更新できます。 "ForceApplySetting" を使用して、(古いバージョンの) 既存のクラスターが使用停止になるようにします。

サンプル クエリ:

$_target_work_space = @("workspace1", "workspace2")

Get-AzSynapseWorkspace |
    ForEach-Object {
        if ($_target_work_space -contains $_.Name) {
            $_workspace_name = $_.Name
            Write-Host "Updating workspace: $($_workspace_name)"
            Get-AzSynapseSparkPool -WorkspaceName $_workspace_name |
            ForEach-Object {
                Write-Host "Updating Spark pool: $($_.Name)"
                Write-Host "Current Spark version: $($_.SparkVersion)"
        
                Update-AzSynapseSparkPool -WorkspaceName $_workspace_name -Name $_.Name -SparkVersion 3.5 -ForceApplySetting
              }
        }
    }