Apache Spark in Azure Machine Learning

Integratie van Azure Machine Learning met Azure Synapse Analytics biedt eenvoudige toegang tot gedistribueerde rekenbronnen via het Apache Spark-framework. Deze integratie biedt deze Apache Spark-computingervaringen:

  • Serverloze Spark-rekenkracht
  • Gekoppelde Synapse Spark-pool

Serverloze Spark-rekenkracht

Met het Apache Spark-framework is serverloze Spark-berekening van Azure Machine Learning de eenvoudigste manier om gedistribueerde rekentaken uit te voeren in de Azure Machine Learning-omgeving. Azure Machine Learning biedt een volledig beheerd, serverloos Apache Spark-rekencluster op aanvraag. De gebruikers kunnen voorkomen dat een Azure Synapse-werkruimte en een Synapse Spark-pool moeten worden gemaakt.

Gebruikers kunnen resources definiëren, waaronder het exemplaartype en de Apache Spark-runtimeversie. Ze kunnen deze resources vervolgens gebruiken om toegang te krijgen tot serverloze Spark-berekeningen, in Azure Machine Learning-notebooks, voor:

Punten om in overweging te nemen

Serverloze Spark-berekening werkt goed voor de meeste gebruikersscenario's waarvoor snelle toegang tot gedistribueerde computingresources via Apache Spark is vereist. Om een weloverwogen beslissing te nemen, moeten gebruikers echter rekening houden met de voor- en nadelen van deze aanpak.

Voordelen:

  • Er zijn geen afhankelijkheden voor het maken van andere Azure-resources voor Apache Spark (Azure Synapse-infrastructuur werkt onder de schermen).
  • Er zijn geen vereiste abonnementsmachtigingen nodig om azure Synapse-gerelateerde resources te maken.
  • U hebt geen quota voor SQL-pools nodig.

Nadelen:

  • Er ontbreekt een permanente Hive-metastore. Serverloze Spark-rekenkracht biedt alleen ondersteuning voor Spark SQL in het geheugen.
  • Er zijn geen beschikbare tabellen of databases.
  • Azure Purview-integratie ontbreekt.
  • Geen beschikbare gekoppelde services.
  • Minder gegevensbronnen en connectors.
  • Geen configuratie op poolniveau.
  • Geen bibliotheekbeheer op poolniveau.
  • Alleen gedeeltelijke ondersteuning voor mssparkutils.

Netwerkconfiguratie

Als u netwerkisolatie wilt gebruiken met Azure Machine Learning en serverloze Spark-rekenkracht, gebruikt u een beheerd virtueel netwerk.

Inactiviteitsperioden en mechanisme voor afbreken

Bij de eerste keer starten heeft een serverloze Spark-rekenresource (koude start) mogelijk drie tot vijf minuten nodig om de Spark-sessie zelf te starten. De geautomatiseerde serverloze Spark-compute-inrichting, ondersteund door Azure Synapse, veroorzaakt deze vertraging. Nadat de serverloze Spark-berekening is ingericht en een Apache Spark-sessie wordt gestart, ondervindt de volgende code-uitvoeringen (warm starten) deze vertraging niet.

De Configuratie van de Spark-sessie biedt een optie waarmee een sessietime-out (in minuten) wordt gedefinieerd. De Spark-sessie eindigt na een inactiviteitsperiode die de door de gebruiker gedefinieerde time-out overschrijdt. Als een andere Spark-sessie in de volgende 10 minuten niet start, worden resources die zijn ingericht voor de serverloze Spark-rekenkracht, afgebroken.

Nadat de serverloze Spark-rekenresource is afgeschreven, is het indienen van de volgende taak een koude start vereist. In de volgende visualisatie ziet u enkele sessie-inactiviteitsperioden en scenario's voor het afbreken van clusters.

Uitvouwbaar diagram met scenario's voor inactiviteitsperiode van Apache Spark-sessie en cluster teardown.

Conda-pakketten op sessieniveau

Een YAML-bestand met Conda-afhankelijkheden kan veel Conda-pakketten op sessieniveau definiëren in een sessieconfiguratie. Er treedt een time-out op voor een sessie als er meer dan 15 minuten nodig is om de Conda-pakketten te installeren die zijn gedefinieerd in het YAML-bestand. Het wordt belangrijk om eerst te controleren of een vereist pakket al beschikbaar is in de Basisinstallatiekopie van Azure Synapse. Hiervoor moeten gebruikers de koppeling volgen om te bepalen welke pakketten beschikbaar zijn in de basisinstallatiekopieën voor de Apache Spark-versie die in gebruik is:

Belangrijk

Azure Synapse Runtime voor Apache Spark: aankondigingen

  • Azure Synapse Runtime voor Apache Spark 3.2:
    • EOLA Aankondigingsdatum: 8 juli 2023
    • Einddatum van ondersteuning: 8 juli 2024. Na deze datum wordt de runtime uitgeschakeld.
  • Voor continue ondersteuning en optimale prestaties raden we u aan om te migreren naar

Notitie

Voor een Conda-pakket op sessieniveau:

  • de Koude start heeft ongeveer tien tot vijftien minuten nodig.
  • de Warme start, met hetzelfde Conda-pakket, heeft ongeveer één minuut nodig.
  • de Warme start, met een ander Conda-pakket, heeft ook ongeveer tien tot vijftien minuten nodig.
  • Als het pakket dat u installeert groot is of een lange installatietijd nodig heeft, kan dit van invloed zijn op de opstarttijd van het Spark-exemplaar.
  • Het wijzigen van de PySpark-, Python-, Scala/Java-, .NET- of Spark-versie wordt niet ondersteund.
  • Docker-installatiekopieën worden niet ondersteund.

De koude starttijd van de sessie verbeteren tijdens het gebruik van Conda-pakketten op sessieniveau

U kunt de koude begintijd van de Spark-sessie verbeteren door de spark.hadoop.aml.enable_cache configuratievariabele in te stellen op true. Het duurt meestal 10 tot 15 minuten voordat de sessie voor het eerst wordt gestart met Conda-pakketten op sessieniveau. Het duurt echter drie tot vijf minuten voordat de volgende sessie koud wordt gestart. Definieer de configuratievariabele in de gebruikersinterface van de sessie configureren onder Configuratie-instellingen.

Uitvouwbaar diagram met de spark-sessieconfiguratietag waarmee cache mogelijk wordt.

Gekoppelde Synapse Spark-pool

Een Spark-pool die is gemaakt in een Azure Synapse-werkruimte wordt beschikbaar in de Azure Machine Learning-werkruimte met de gekoppelde Synapse Spark-pool. Deze optie is mogelijk geschikt voor gebruikers die een bestaande Synapse Spark-pool opnieuw willen gebruiken.

Voor het koppelen van een Synapse Spark-pool aan een Azure Machine Learning-werkruimte zijn andere stappen vereist voordat u de pool in Azure Machine Learning kunt gebruiken voor:

Een gekoppelde Synapse Spark-pool biedt toegang tot systeemeigen Azure Synapse-functies. De gebruiker is verantwoordelijk voor het inrichten, koppelen, configureren en beheren van Synapse Spark-pools.

De Spark-sessieconfiguratie voor een gekoppelde Synapse Spark-pool biedt ook een optie voor het definiëren van een sessietime-out (in minuten). Het time-outgedrag van de sessie lijkt op de beschrijving in de vorige sectie, behalve dat de bijbehorende resources nooit worden uitgesplitst na de time-out van de sessie.

Spark-clustergrootte definiëren

In Azure Machine Learning Spark-taken kunt u de grootte van het Spark-cluster definiëren met drie parameterwaarden:

  • Aantal uitvoerders
  • Uitvoerderskernen
  • Uitvoerprogrammageheugen

U moet een Azure Machine Learning Apache Spark-uitvoerprogramma beschouwen als equivalent aan Azure Spark-werkknooppunten. In een voorbeeld kunnen deze parameters worden uitgelegd. Stel dat u het aantal uitvoerders hebt gedefinieerd als 6 (gelijk aan zes werkknooppunten), het aantal uitvoerderskernen als 4 en uitvoerdersgeheugen als 28 GB. Uw Spark-taak heeft vervolgens toegang tot een cluster met in totaal 24 kernen en 168 GB geheugen.

Resourcetoegang voor Spark-taken garanderen

Voor toegang tot gegevens en andere resources kan een Spark-taak een beheerde identiteit of een passthrough voor gebruikersidentiteiten gebruiken. Deze tabel bevat een overzicht van de mechanismen die Spark-taken gebruiken voor toegang tot resources.

Spark-pool Ondersteunde identiteiten Standaardidentiteit
Serverloze Spark-rekenkracht Gebruikersidentiteit, door de gebruiker toegewezen beheerde identiteit gekoppeld aan de werkruimte Gebruikersidentiteit
Gekoppelde Synapse Spark-pool Gebruikersidentiteit, door de gebruiker toegewezen beheerde identiteit gekoppeld aan de gekoppelde Synapse Spark-pool, door het systeem toegewezen beheerde identiteit van de gekoppelde Synapse Spark-pool Door het systeem toegewezen beheerde identiteit van de gekoppelde Synapse Spark-pool

In dit artikel wordt de toegang tot resources voor Spark-taken beschreven. In een notebooksessie gebruiken zowel de serverloze Spark-berekening als de gekoppelde Synapse Spark-pool passthrough voor gebruikersidentiteit voor gegevenstoegang tijdens interactieve gegevens-wrangling.

Notitie

  • Wijs inzender- en opslagblobgegevensbijdragerrollen (in het Azure-opslagaccount dat wordt gebruikt voor gegevensinvoer en uitvoer) toe aan de identiteit die wordt gebruikt voor het verzenden van de Spark-taak om ervoor te zorgen dat de Spark-taak is uitgevoerd.
  • Als een gekoppelde Synapse Spark-pool verwijst naar een Synapse Spark-pool in een Azure Synapse-werkruimte en die werkruimte een beheerd virtueel netwerk heeft, configureert u een beheerd privé-eindpunt voor een opslagaccount. Deze configuratie zorgt voor gegevenstoegang.

Volgende stappen