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. U hoeft geen Azure Synapse-werkruimte en een Synapse Spark-pool te maken.

U kunt resources definiëren, waaronder het exemplaartype en de Apache Spark-runtimeversie. Gebruik deze resources voor toegang 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. Als u echter een weloverwogen beslissing wilt nemen, moet u rekening houden met de voor- en nadelen van deze aanpak.

Voordelen:

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

Nadelen:

  • Geen permanente Hive-metastore. Serverloze Spark-rekenkracht biedt alleen ondersteuning voor Spark SQL in het geheugen.
  • Geen tabellen of databases beschikbaar.
  • Geen Azure Purview-integratie.
  • Geen beschikbare gekoppelde services.
  • Minder gegevensbronnen en connectoren.
  • 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. Deze vertraging treedt op omdat de geautomatiseerde serverloze Spark-rekenresource, die wordt ondersteund door Azure Synapse, tijd nodig heeft om in te richten. Nadat de serverloze Spark-berekening is ingericht en een Apache Spark-sessie wordt gestart, ondervinden 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 niet in de volgende tien minuten start, worden de resources die zijn ingericht voor de serverloze Spark-berekening, door het systeem verwijderd.

Nadat het systeem de serverloze Spark-rekenresource heeft afgebroken, vereist het indienen van de volgende job een koude start. 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. Controleer of een vereist pakket al beschikbaar is in de Azure Synapse-basisinstallatiekopieën. Ga hiervoor naar deze resources om te bepalen welke pakketten beschikbaar zijn in de basisinstallatiekopieën voor de Apache Spark-versie die wordt gebruikt:

Notitie

Voor een Conda-pakket op sessieniveau:

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

De koude opstarttijd van sessies verbeteren bij het gebruik van Conda-pakketten op sessieniveau

Stel de spark.hadoop.aml.enable_cache configuratievariabele in om true de koude starttijd van de Spark-sessie te verbeteren. Met Conda-pakketten op sessieniveau duurt het doorgaans 10 tot 15 minuten voordat de sessie voor het eerst wordt gestart. Echter duren volgende sessie-koude starts drie tot vijf minuten. 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

Wanneer u een Spark-pool maakt in een Azure Synapse-werkruimte, kunt u deze openen in de Azure Machine Learning-werkruimte met de gekoppelde Synapse Spark-pool. Deze optie is geschikt voor gebruikers die een bestaande Synapse Spark-pool opnieuw willen gebruiken.

Als u een Synapse Spark-pool wilt koppelen aan een Azure Machine Learning-werkruimte, moet u meer stappen uitvoeren voordat u de pool in Azure Machine Learning kunt gebruiken voor:

Een gekoppelde Synapse Spark-pool biedt toegang tot systeemeigen Azure Synapse-functies. U bent verantwoordelijk voor het inrichten, koppelen, configureren en beheren van de Synapse Spark-pool.

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
  • Uitvoeringskernen
  • Uitvoerprogrammageheugen

Overweeg een Apache Spark-uitvoerprogramma voor Azure Machine Learning als equivalent aan Azure Spark-werkknooppunten. In een voorbeeld kunnen deze parameters worden uitgelegd. Als u het aantal uitvoerders definieert als 6 (gelijk aan zes werkknooppunten), heeft uw Spark-taak 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 zijn zowel de serverloze Spark-rekenkracht als de gekoppelde Synapse Spark-pool afhankelijk van doorgifte van gebruikersidentiteit voor toegang tot gegevens tijdens interactieve gegevensvoorbereiding.

Notitie

  • Wijs de rollen Contributor en Storage Blob Data Contributor (op het Azure-opslagaccount dat wordt gebruikt voor gegevensinvoer en -uitvoer) toe aan de identiteit die u gebruikt voor het indienen van Spark-taken om ervoor te zorgen dat de Spark-taak correct wordt 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