Azure Synapse-runtimes

Apache Spark-pools in Azure Synapse gebruiken runtimes om essentiële onderdeelversies, zoals Azure Synapse-optimalisaties, pakketten en connectors met een specifieke Apache Spark-versie, te koppelen. Elke runtime wordt periodiek bijgewerkt met nieuwe verbeteringen, functies en patches. Wanneer u een serverloze Apache Spark-pool maakt, selecteert u de bijbehorende Apache Spark-versie. Op basis hiervan wordt de pool vooraf geïnstalleerd met de bijbehorende runtime-onderdelen en -pakketten.

De runtimes hebben de volgende voordelen:

  • Snellere opstarttijden van sessies
  • Geteste compatibiliteit met specifieke Apache Spark-versies
  • Toegang tot populaire, compatibele connectors en opensource-pakketten

Ondersteunde releases van Azure Synapse-runtime

Waarschuwing

Melding over einde van ondersteuning voor Azure Synapse Runtime voor Apache Spark 2.4 en Apache Spark 3.1.

  • Vanaf 29 september 2023 wordt de officiële ondersteuning voor Spark 2.4 Runtimes stopgezet in Azure Synapse.
  • Vanaf 26 januari 2024 wordt de officiële ondersteuning voor Spark 3.1-runtimes in Azure Synapse stopgezet.
  • Na deze datums behandelen we geen ondersteuningstickets met betrekking tot Spark 2.4 of 3.1. Er is geen release-pijplijn aanwezig voor bug- of beveiligingsoplossingen voor Spark 2.4 en 3.1. Het gebruik van Spark 2.4 of 3.1 na de ondersteuningsonderkapingsdatums wordt op eigen risico uitgevoerd. We raden het gebruik ervan sterk af vanwege mogelijke beveiligings- en functionaliteitsproblemen.

Tip

We raden u ten zeerste aan om workloads proactief te upgraden naar een recentere GA-versie van de runtime (bijvoorbeeld Azure Synapse Runtime voor Apache Spark 3.4 (GA)). Raadpleeg de Apache Spark-migratiehandleiding.

De volgende tabel bevat de runtimenaam, de Apache Spark-versie en de releasedatum voor ondersteunde Azure Synapse Runtime-releases.

Runtimenaam Releasedatum Releasefase Einddatum van ondersteuningsaankondiging Ingangsdatum van de ondersteuning
Azure Synapse Runtime voor Apache Spark 3.4 21 november 2023 GA (vanaf 8 april 2024)
Azure Synapse Runtime voor Apache Spark 3.3 17 november 2022 GA (vanaf 23 februari 2023) Q2/Q3 2024 Q1 2025
Azure Synapse Runtime voor Apache Spark 3.2 8 juli 2022 Einde van de ondersteuning aangekondigd 8 juli 2023 8 juli 2024
Azure Synapse Runtime voor Apache Spark 3.1 26 mei 2021 Einde van ondersteuning 26 januari 2023 26 januari 2024
Azure Synapse Runtime voor Apache Spark 2.4 15 december 2020 Einde van ondersteuning 29 juli 2022 29 september 2023

Runtimereleasefasen

Raadpleeg Synapse Runtime voor de levenscyclus en ondersteuningsbeleid van Apache Spark voor de volledige runtime voor de levenscyclus en ondersteuning van Apache Spark.

Runtimepatching

Azure Synapse-runtimes voor Apache Spark-patches worden maandelijks geïmplementeerd met bug-, functie- en beveiligingsoplossingen voor de Apache Spark-kernengine, taalomgevingen, connectors en bibliotheken.

Notitie

  • Onderhoudsupdates worden automatisch toegepast op nieuwe sessies voor een bepaalde serverloze Apache Spark-pool.
  • U moet testen en valideren dat uw toepassingen correct worden uitgevoerd bij het gebruik van nieuwe runtimeversies.

Belangrijk

Log4j 1.2.x-beveiligingspatches

Opensource Log4j-bibliotheek versie 1.2.x heeft verschillende bekende CVE's (Common Vulnerabilities and Exposures), zoals hier wordt beschreven.

Op alle Synapse Spark-poolruntimes hebben we de Log4j 1.2.17 JAR's gepatcht om de volgende CV's te beperken: CVE-2019-1751, CVE-2020-9488, CVE-2021-4104, CVE-2022-23302, CVE-2022-2330, CVE-2022-23307

De toegepaste patch werkt door de volgende bestanden te verwijderen die nodig zijn om de beveiligingsproblemen aan te roepen:

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

Hoewel de bovenstaande klassen niet zijn gebruikt in de standaard log4j-configuraties in Synapse, is het mogelijk dat sommige gebruikerstoepassing er nog steeds van afhankelijk kan zijn. Als uw toepassing deze klassen moet gebruiken, gebruikt u Bibliotheekbeheer om een beveiligde versie van Log4j toe te voegen aan de Spark-pool. Gebruik Log4j versie 1.2.17 niet, omdat deze de beveiligingsproblemen opnieuw zou introduceren.

Het patchbeleid verschilt op basis van de levenscyclusfase van runtime:

  • Algemeen beschikbare runtime (GA): Ontvang geen upgrades voor primaire versies (dat wil gezegd 3.x -> 4.x). En voert een upgrade uit van een secundaire versie (dat wil gezegd 3.x -> 3.y) zolang er geen afschaffings- of regressie-effecten zijn.

  • Preview-runtime: geen primaire versie-upgrades, tenzij strikt noodzakelijk. Secundaire versies (3.x -> 3.y) worden bijgewerkt om de nieuwste functies toe te voegen aan een runtime.

  • LtS-runtime (Long Term Support) wordt alleen gepatcht met beveiligingsoplossingen.

  • Het einde van de aangekondigde ondersteuningsruntime heeft geen bug- en functiecorrecties. Beveiligingsoplossingen worden teruggezet op basis van risicoanalyse.

Migratie tussen Apache Spark-versies - ondersteuning

Deze handleiding biedt een gestructureerde benadering voor gebruikers die hun Azure Synapse Runtime willen upgraden voor Apache Spark-workloads van versie 2.4, 3.1, 3.2 of 3.3 naar de nieuwste GA-versie, zoals 3.4. Door een upgrade naar de meest recente versie uit te voeren, kunnen gebruikers profiteren van prestatieverbeteringen, nieuwe functies en verbeterde beveiligingsmaatregelen. Het is belangrijk te weten dat het overstappen naar een hogere versie mogelijk aanpassingen van uw bestaande Spark-code vereist vanwege incompatibiliteit of afgeschafte functies.

Stap 1: Evalueren en plannen

  • Compatibiliteit evalueren: begin met het bekijken van Apache Spark-migratiehandleidingen om mogelijke incompatibiliteit, afgeschafte functies en nieuwe API's te identificeren tussen uw huidige Spark-versie (2.4, 3.1, 3.2 of 3.3) en de doelversie (bijvoorbeeld 3.4).
  • Codebase analyseren: bekijk zorgvuldig uw Spark-code om het gebruik van afgeschafte of gewijzigde API's te identificeren. Let vooral op SQL-query's en door de gebruiker gedefinieerde functies (UDF's), die mogelijk worden beïnvloed door de upgrade.

Stap 2: Een nieuwe Spark-pool maken voor testen

  • Een nieuwe pool maken: Ga in Azure Synapse naar de sectie Spark-pools en stel een nieuwe Spark-pool in. Selecteer de spark-doelversie (bijvoorbeeld 3.4) en configureer deze op basis van uw prestatievereisten.
  • Configuratie van Spark-pool configureren: zorg ervoor dat alle bibliotheken en afhankelijkheden in uw nieuwe Spark-pool worden bijgewerkt of vervangen om compatibel te zijn met Spark 3.4.

Stap 3: Uw code migreren en testen

  • Code migreren: werk uw code bij zodat deze compatibel is met de nieuwe of herziene API's in Apache Spark 3.4. Dit omvat het aanpakken van afgeschafte functies en het aannemen van nieuwe functies, zoals beschreven in de officiële Apache Spark-documentatie.
  • Testen in ontwikkelomgeving: test uw bijgewerkte code in een ontwikkelomgeving in Azure Synapse, niet lokaal. Deze stap is essentieel voor het identificeren en oplossen van problemen voordat u naar productie gaat.
  • Implementeren en bewaken: implementeer uw toepassing na grondige tests en validatie in de ontwikkelomgeving in de nieuwe Spark 3.4-pool. Het is essentieel om de toepassing te controleren op onverwacht gedrag. Gebruik de bewakingshulpprogramma's die beschikbaar zijn in Azure Synapse om de prestaties van uw Spark-toepassingen bij te houden.

Vraag: Welke stappen moeten worden uitgevoerd bij het migreren van 2.4 naar 3.X?

Antwoord: Raadpleeg de Apache Spark-migratiehandleiding.

Vraag: Er is een fout opgetreden bij het upgraden van spark-poolruntime met behulp van de PowerShell-cmdlet wanneer ze bibliotheken hebben gekoppeld.

Antwoord: Gebruik de PowerShell-cmdlet niet als u aangepaste bibliotheken hebt geïnstalleerd in uw Synapse-werkruimte. Voer in plaats daarvan de volgende stappen uit:

  1. Maak Spark-pool 3.3 opnieuw vanaf de grond.
  2. Downgrade de huidige Spark-pool 3.3 naar 3.1, verwijder alle gekoppelde pakketten en voer vervolgens een upgrade uit naar 3.3.