Dela via


Azure Synapse-körning

Apache Spark-pooler i Azure Synapse använder runtimes för att koppla ihop viktiga komponentversioner som Azure Synapse-optimeringar, paket och anslutningsappar med en specifik Apache Spark-version. Varje körning uppgraderas regelbundet för att inkludera nya förbättringar, funktioner och korrigeringar. När du skapar en serverlös Apache Spark-pool väljer du motsvarande Apache Spark-version. Baserat på detta är poolen förinstallerad med de associerade körningskomponenterna och paketen.

Körningarna har följande fördelar:

  • Snabbare starttider för sessioner
  • Testad kompatibilitet med specifika Apache Spark-versioner
  • Åtkomst till populära, kompatibla anslutningsappar och paket med öppen källkod

Azure Synapse-körningsversioner som stöds

Dricks

Vi rekommenderar starkt att du proaktivt uppgraderar arbetsbelastningar till en nyare GA-version av körningen som är Azure Synapse Runtime för Apache Spark 3.4 (GA)). Läs migreringsguiden för Apache Spark.

I följande tabell visas körningsnamnet, Apache Spark-versionen och versionsdatumet för Azure Synapse Runtime-versioner som stöds.

Körningsnamn Frisläppningsdatum Versionssteg Meddelandedatum för supportens upphörande Slutdatum för supportens giltighet
Azure Synapse Runtime för Apache Spark 3.4 21 november 2023 GA (från och med 8 apr 2024) Q2 2025 Q1 2026
Azure Synapse Runtime för Apache Spark 3.3 17 november 2022 supporten upphör att meddelas 12 juli 2024 3/31/2025
Azure Synapse Runtime för Apache Spark 3.2 den 8 juli 2022 inaktuell och snart inaktiverad den 8 juli 2023 den 8 juli 2024
Azure Synapse Runtime för Apache Spark 3.1 26 maj 2021 inaktuell och snart inaktiverad den 26 januari 2023 den 26 januari 2024
Azure Synapse Runtime för Apache Spark 2.4 den 15 december 2020 inaktuell och snart inaktiverad 29 juli 2022 den 29 september 2023

Körningsversionssteg

Fullständig körning för Apache Spark-livscykeln och supportprinciper finns i Synapse-körning för Apache Spark-livscykel och support.

Körningskorrigering

Azure Synapse-körningar för Apache Spark-korrigeringar distribueras varje månad med bugg-, funktions- och säkerhetskorrigeringar till Apache Spark-kärnmotorn, språkmiljöer, anslutningsappar och bibliotek.

Kommentar

  • Underhållsuppdateringar tillämpas automatiskt på nya sessioner för en viss serverlös Apache Spark-pool.
  • Du bör testa och verifiera att dina program körs korrekt när du använder nya körningsversioner.

Viktigt!

Log4j 1.2.x säkerhetskorrigeringar

Log4j-biblioteket med öppen källkod version 1.2.x har flera kända CVE:er (Vanliga sårbarheter och exponeringar), enligt beskrivningen här.

På alla Synapse Spark-poolkörningar har vi korrigerat Log4j 1.2.17 JAR för att minimera följande CVE: CVE-2019-1751, CVE-2020-9488, CVE-2021-4104, CVE-2022-23302, CVE-2022-2330, CVE-2022-23307

Den tillämpade korrigeringen fungerar genom att ta bort följande filer som krävs för att anropa säkerhetsriskerna:

  • 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/*

Även om ovanstående klasser inte användes i standardkonfigurationerna för Log4j i Synapse, är det möjligt att vissa användarprogram fortfarande kan vara beroende av det. Om ditt program behöver använda dessa klasser använder du Bibliotekshantering för att lägga till en säker version av Log4j i Spark-poolen. Använd inte Log4j version 1.2.17, eftersom det skulle vara att återinföra säkerhetsriskerna.

Korrigeringsprincipen skiljer sig åt baserat på livscykelsteget för körning:

  • Allmänt tillgänglig körning (GA): Ta emot inga uppgraderingar på huvudversioner (dvs. 3.x–> 4.x). Och uppgraderar en delversion (d.v.s. 3.x–> 3.y) så länge det inte finns några utfasnings- eller regressionseffekter.

  • Förhandsversionskörning: Inga större versionsuppgraderingar om det inte är absolut nödvändigt. Delversioner (3.x–> 3.y) uppgraderas för att lägga till de senaste funktionerna i en körning.

  • Lts-körningen (Long Term Support) korrigeras endast med säkerhetskorrigeringar.

  • Slut på supporten som meddelats att körningen inte har bugg- och funktionskorrigeringar. Säkerhetskorrigeringar backporteras baserat på riskbedömning.

Migrering mellan Apache Spark-versioner – stöd

Den här guiden innehåller en strukturerad metod för användare som vill uppgradera sina Azure Synapse Runtime för Apache Spark-arbetsbelastningar från version 2.4, 3.1, 3.2 eller 3.3 till den senaste GA-versionen, till exempel 3.4. Genom att uppgradera till den senaste versionen kan användarna dra nytta av prestandaförbättringar, nya funktioner och förbättrade säkerhetsåtgärder. Observera att övergången till en högre version kan kräva justeringar av din befintliga Spark-kod på grund av inkompatibiliteter eller inaktuella funktioner.

Steg 1: Utvärdera och planera

  • Utvärdera kompatibilitet: Börja med att granska Apache Spark-migreringsguider för att identifiera eventuella inkompatibiliteter, inaktuella funktioner och nya API:er mellan din aktuella Spark-version (2.4, 3.1, 3.2 eller 3.3) och målversionen (t.ex. 3.4).
  • Analysera Codebase: Granska Spark-koden noggrant för att identifiera användningen av inaktuella eller ändrade API:er. Var särskilt uppmärksam på SQL-frågor och användardefinierade funktioner (UDF:er), som kan påverkas av uppgraderingen.

Steg 2: Skapa en ny Spark-pool för testning

  • Skapa en ny pool: I Azure Synapse går du till avsnittet Spark-pooler och konfigurerar en ny Spark-pool. Välj Spark-målversionen (t.ex. 3.4) och konfigurera den enligt dina prestandakrav.
  • Konfigurera Konfiguration av Spark-pool: Se till att alla bibliotek och beroenden i din nya Spark-pool uppdateras eller ersätts för att vara kompatibla med Spark 3.4.

Steg 3: Migrera och testa koden

  • Migrera kod: Uppdatera koden så att den är kompatibel med de nya eller reviderade API:erna i Apache Spark 3.4. Det handlar om att ta itu med inaktuella funktioner och införa nya funktioner enligt beskrivningen i den officiella Apache Spark-dokumentationen.
  • Test i utvecklingsmiljö: Testa din uppdaterade kod i en utvecklingsmiljö i Azure Synapse, inte lokalt. Det här steget är viktigt för att identifiera och åtgärda eventuella problem innan du går över till produktion.
  • Distribuera och övervaka: Distribuera ditt program till den nya Spark 3.4-poolen efter noggrann testning och validering i utvecklingsmiljön. Det är viktigt att övervaka programmet för oväntade beteenden. Använd de övervakningsverktyg som är tillgängliga i Azure Synapse för att hålla reda på spark-programmens prestanda.

Fråga: Vilka åtgärder bör vidtas vid migrering från 2.4 till 3.X?

Svar: Läs migreringsguiden för Apache Spark.

Fråga: Jag fick ett fel när jag försökte uppgradera Spark-poolkörningen med hjälp av PowerShell-cmdleten när de har anslutna bibliotek.

Svar: Använd inte PowerShell-cmdlet om du har anpassade bibliotek installerade på Synapse-arbetsytan. Följ i stället dessa steg:

  1. Återskapa Spark Pool 3.3 från grunden.
  2. Nedgradera den aktuella Spark-poolen 3.3 till 3.1, ta bort eventuella paket som är anslutna och uppgradera sedan igen till 3.3.

Fråga: Varför kan jag inte uppgradera till 3.4 utan att återskapa en ny Spark-pool?

Svar: Detta är inte tillåtet från UX, kunden kan använda Azure PowerShell för att uppdatera Spark-versionen. Använd "ForceApplySetting" så att alla befintliga kluster (med gammal version) inaktiveras.

Exempelfråga:

$_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
              }
        }
    }