Share via


Apache Spark in Azure Machine Learning

L'integrazione di Azure Machine Learning con Azure Synapse Analytics consente di accedere facilmente alle risorse di calcolo distribuite tramite il framework Apache Spark. Questa integrazione offre queste esperienze di calcolo Apache Spark:

  • Calcolo Spark serverless
  • Pool di Spark Synapse collegato

Calcolo Spark serverless

Con il framework Apache Spark, l'ambiente di calcolo Spark serverless di Azure Machine Learning è il modo più semplice per eseguire attività di calcolo distribuite nell'ambiente di Azure Machine Learning. Azure Machine Learning offre un cluster di calcolo Apache Spark completamente gestito, serverless e su richiesta. Gli utenti possono evitare la necessità di creare un'area di lavoro di Azure Synapse e un pool di Spark Synapse.

Gli utenti possono definire risorse, tra cui il tipo di istanza e la versione del runtime di Apache Spark. Possono quindi usare tali risorse per accedere al calcolo Spark serverless, nei notebook di Azure Machine Learning, per:

Elementi da considerare:

L'ambiente di calcolo Spark serverless funziona bene per la maggior parte degli scenari utente che richiedono un accesso rapido alle risorse di calcolo distribuite tramite Apache Spark. Tuttavia, per prendere una decisione informata, gli utenti devono considerare i vantaggi e gli svantaggi di questo approccio.

Vantaggi:

  • Nessuna dipendenza dalla creazione di altre risorse di Azure per Apache Spark (l'infrastruttura di Azure Synapse funziona dietro le quinte).
  • Nessuna autorizzazione di sottoscrizione necessaria per creare risorse correlate ad Azure Synapse.
  • Non sono necessarie quote del pool SQL.

Svantaggi:

  • Manca un metastore Hive persistente. L'ambiente di calcolo Spark serverless supporta solo SPARK SQL in memoria.
  • Nessuna tabella o database disponibile.
  • Integrazione di Azure Purview mancante.
  • Nessun servizio collegato disponibile.
  • Meno origini dati e connettori.
  • Nessuna configurazione a livello di pool.
  • Nessuna gestione delle librerie a livello di pool.
  • Supporto parziale solo per mssparkutils.

Configurazione di rete

Per usare l'isolamento di rete con il calcolo di Azure Machine Learning e Spark serverless, usare una rete virtuale gestita .

Periodi di inattività e meccanismo di disinstallazione

Al primo avvio, una risorsa di calcolo Spark serverless (avvio a freddo) potrebbe richiedere da tre a cinque minuti per avviare la sessione Spark stessa. Il provisioning di calcolo Spark serverless automatizzato, supportato da Azure Synapse, causa questo ritardo. Dopo il provisioning del calcolo Spark serverless e dopo l'avvio di una sessione Apache Spark, le esecuzioni di codice successive (avvio a caldo) non riscontrano questo ritardo.

La configurazione della sessione Spark offre un'opzione che definisce un timeout della sessione (in minuti). La sessione Spark terminerà dopo un periodo di inattività che supera il timeout definito dall'utente. Se un'altra sessione Spark non viene avviata nei 10 minuti seguenti, le risorse di cui è stato effettuato il provisioning per l'ambiente di calcolo Spark serverless verranno eliminate.

Quando si verifica la disinstallazione della risorsa di calcolo Spark serverless, l'invio del processo successivo richiederà un avvio a freddo. La visualizzazione successiva mostra alcuni scenari di inattività della sessione e di disinstallazione del cluster.

Diagramma espandibile che mostra gli scenari per il periodo di inattività della sessione Apache Spark e l'disinstallazione del cluster.

Pacchetti Conda a livello di sessione

Un file YAML di dipendenza Conda può definire molti pacchetti Conda a livello di sessione in una configurazione di sessione. Se sono necessari più di 15 minuti per installare i pacchetti Conda definiti nel file YAML, si verifica il timeout di una sessione. Diventa importante verificare prima di tutto se un pacchetto obbligatorio è già disponibile nell'immagine di base di Azure Synapse. A tale scopo, gli utenti devono seguire il collegamento per determinare pacchetti disponibili nell'immagine di base per la versione di Apache Spark in uso:

Importante

Runtime di Azure Synapse per Apache Spark: annunci

  • Runtime di Azure Synapse per Apache Spark 3.2:
    • Data annuncio EOLA: 8 luglio 2023
    • Data di fine supporto: 8 luglio 2024. Dopo questa data, il runtime verrà disabilitato.
  • Per un supporto continuo e prestazioni ottimali, è consigliabile eseguire la migrazione a

Nota

Per un pacchetto Conda a livello di sessione:

  • l’avvio a freddo richiederà circa 10-15 minuti.
  • l’avvio a caldo, usando lo stesso pacchetto Conda, richiederà circa un minuto.
  • l’avvio a caldo, con un pacchetto Conda diverso, richiederà anch’esso circa dieci-quindici minuti.
  • Se il pacchetto installato è di grandi dimensioni o richiede molto tempo per l’installazione, potrebbe influire sul tempo di avvio dell'istanza di Spark.
  • La modifica della versione di PySpark, Python, Scala/Java, .NET o Spark non è supportata.
  • Le immagini Docker non sono supportate.

Miglioramento dell'ora di avvio a freddo della sessione durante l'uso di pacchetti Conda a livello di sessione

È possibile migliorare il tempodi avvio a freddo impostando la variabile di configurazionespark.hadoop.aml.enable_cache su true. La sessione avvio a freddo con i pacchetti Conda a livello di sessione richiede in genere da 10 a 15 minuti all'avvio della sessione per la prima volta. Tuttavia, la sessione successiva di avvio a freddo richiede da tre a cinque minuti. Definire la variabile di configurazione nell’interfaccia utente Configura sessione in Impostazioni di configurazione.

Diagramma espandibile che mostra il tag di configurazione della sessione Spark che abilita la cache.

Pool di Spark Synapse collegato

Un pool di Spark creato in un'area di lavoro di Azure Synapse diventa disponibile nell'area di lavoro di Azure Machine Learning con il pool di Spark synapse collegato. Questa opzione può essere adatta agli utenti che vogliono riutilizzare un pool di Spark Synapse esistente.

L'allegato di un pool di Synapse Spark a un'area di lavoro di Azure Machine Learning richiede altri passaggi prima di poter usare il pool in Azure Machine Learning per:

Un pool di Spark Synapse collegato consente l'accesso alle funzionalità native di Azure Synapse. L'utente è responsabile del provisioning, del collegamento, della configurazione e della gestione del pool di Synapse Spark.

La configurazione della sessione Spark per un pool di Spark collegato offre anche un'opzione per definire un timeout di sessione (in minuti). Il comportamento di timeout della sessione è simile alla descrizione nella sezione precedente, ad eccezione del fatto che le risorse associate non vengono mai eliminate dopo il timeout della sessione.

Definizione delle dimensioni del cluster Spark

Nei processi Spark di Azure Machine Learning è possibile definire le dimensioni del cluster Spark con tre valori di parametro:

  • Numero di executor
  • Core dell'executor
  • Memoria dell'executor

È consigliabile considerare un executor Apache Spark di Azure Machine Learning come equivalente ai nodi di lavoro di Azure Spark. Un esempio può spiegare questi parametri. Si supponga di aver definito il numero di executor come 6 (equivalenti a sei nodi di lavoro), il numero di core executor come 4 e la memoria dell'executor come 28 GB. Il processo Spark può quindi accedere a un cluster con 24 core in totale e 168 GB di memoria.

Garantire l'accesso alle risorse per i processi Spark

Per accedere ai dati e ad altre risorse, un processo Spark pu?o usare un'identità gestita o un pass-through identità utente. Questa tabella riepiloga i meccanismi usati dai processi Spark per accedere alle risorse.

Pool Spark Identità supportate Identità predefinita
Calcolo Spark serverless Identità utente, identità gestita assegnata dall'utente collegata all'area di lavoro Identità utente
Pool di Spark Synapse collegato Identità utente, identità gestita assegnata dall'utente collegata al pool di Spark synapse collegato, identità gestita assegnata dal sistema del pool di Spark synapse collegato Identità gestita assegnata dal sistema del pool di Spark synapse collegato

Questo articolo descrive l'accesso alle risorse per i processi Spark. In una sessione del notebook, sia il calcolo Spark serverless sia il pool di Spark collegato usano il pass-through dell'identità utente per l'accesso ai dati durante il data wrangling interattivo.

Nota

  • Per garantire la corretta esecuzione del processo Spark, assegnare i ruoli Collaboratore e Collaboratore ai dati dei BLOB di archiviazione (nell'account di archiviazione di Azure usato per l'input e l'output dei dati) all'identità che verrà usata per l'invio del processo Spark.
  • Se un pool di Spark Synapse collegato punta a un pool di Synapse Spark in un'area di lavoro di Azure Synapse e tale area di lavoro ha una rete virtuale gestita associata, configurare un endpoint privato gestito in un account di archiviazione. Questa configurazione consente di garantire l'accesso ai dati.

Passaggi successivi