Azure Synapse ランタイム

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

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

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

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

ヒント

Azure Synapse Runtime for Apache Spark 3.4 (GA)) されている最新の GA バージョンのランタイムにワークロードを事前にアップグレードすることを強くお勧めします。 Apache Spark 移行ガイドを参照してください。

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

ランタイム名 リリース日 リリース ステージ サポート終了のお知らせ日 サポート終了日
Azure Synapse Runtime for Apache Spark 3.4 2023 年 11 月 21 日 GA (2024 年 4 月 8 日時点) 2025 年第 2 四半期 2026 年第 1 四半期
Azure Synapse Runtime for Apache Spark 3.3 2022 年 11 月 17 日 サポート終了が発表されました 2024 年 7 月 12 日 2025/3/31
Azure Synapse Runtime for Apache Spark 3.2 2022 年 7 月 8 日 非推奨になり、間もなく無効になります 2023 年 7 月 8 日 2024 年 7 月 8 日
Azure Synapse Runtime for Apache Spark 3.1 2021 年 5 月 26 日 非推奨になり、間もなく無効になります 2023 年 1 月 26 日 2024 年 1 月 26 日
Azure Synapse Runtime for Apache Spark 2.4 2020 年 12 月 15 日 非推奨になり、間もなく無効になります 2022 年 7 月 29 日 2023 年 9 月 29 日

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

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

ランタイムのパッチ適用

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

Note

  • メンテナンスの更新プログラムは、指定されたサーバーレス 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 バージョン間の移行 - サポート

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

手順 1: 評価と計画

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

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

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

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

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

質問: 2.4 から 3.X への移行で実行する必要がある手順は何ですか?

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

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

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

  1. Spark プール 3.3 を一から再作成します。
  2. 現在の Spark プール 3.3 を 3.1 にダウングレードし、接続されているパッケージを削除してから、もう一度 3.3 にアップグレードします。

質問: 新しい Spark プールを再作成せずに 3.4 にアップグレードできないのはなぜですか?

回答: 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.4 -ForceApplySetting
              }
        }
    }