Come funzionano gli endpoint di sviluppo AWS Glue con i notebook SageMaker - AWS Glue

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Come funzionano gli endpoint di sviluppo AWS Glue con i notebook SageMaker

Uno dei modi più comuni per accedere agli endpoint di sviluppo è usare Jupyter sui notebook SageMaker. Il notebook Jupyter è un'applicazione web open source ampiamente utilizzata nella visualizzazione, nell'analisi dei dati, nel machine learning, ecc. Un notebook SageMaker AWS Glue offre un'esperienza notebook Jupyter con endpoint di sviluppo AWS Glue. Nel notebook SageMaker AWS Glue, l'ambiente notebook Jupyter è preconfigurato con SparkMagic, un plugin Jupyter open source per inviare i processi Spark a un cluster Spark remoto. Apache Livy è un servizio che consente l'interazione con un cluster Spark remoto tramite una REST API. Nel notebook SageMakerAWS Glue, SparkMagic è configurato per richiamare la REST API su un server Livy in esecuzione su un endpoint di sviluppo AWS Glue.

Il seguente flusso di testo spiega come funziona ogni componente:

AWS GlueNotebook SageMaker: (Jupyter → SparkMagic) → (rete) → endpoint di sviluppo AWS Glue: (Apache Livy → Apache Spark)

Una volta eseguito lo script Spark scritto in ogni paragrafo su un notebook Jupyter, il codice Spark viene inviato al server Livy tramite SparkMagic, quindi un processo Spark denominato "livy-session-N" viene eseguito sul cluster Spark. Questo processo è denominato sessione Livy. Il processo Spark verrà eseguito mentre la sessione del notebook è attiva. Il processo Spark verrà terminato quando il kernel Jupyter viene arrestato dal notebook o quando la sessione è scaduta. Viene avviato un processo Spark per ogni file notebook (.ipynb).

È possibile utilizzare un singolo endpoint di sviluppo AWS Glue con più istanze notebook SageMaker. È possibile creare più file notebook in ogni istanza notebook di SageMaker. Quando apri un file di ciascun notebook ed esegui i paragrafi, viene avviata una sessione Livy per ogni file notebook nel cluster Spark tramite SparkMagic. Ogni sessione Livy corrisponde a un singolo processo Spark.

Funzionamento predefinito per endpoint di sviluppo AWS Glue e notebook SageMaker

I processi Spark vengono eseguiti in base alla configurazione di Spark. Esistono diversi modi per impostare la configurazione di Spark (ad esempio, configurazione cluster Spark, configurazione di SparkMagic, ecc.).

Per impostazione predefinita, Spark alloca le risorse del cluster a una sessione Livy in base alla configurazione del cluster Spark. Nell'endpoint di sviluppo AWS Glue, la configurazione del cluster dipende dal tipo di worker. Ecco una tabella che spiega le configurazioni comuni per tipo di worker.

Standard G.1X G.2X
spark.driver.memory 5G 10G 20G
spark.executor.memory 5G 10G 20G
spark.executor.cores 4 8 16
spark.dynamicAllocation.enabled TRUE TRUE TRUE

Il numero massimo di executor Spark viene calcolato automaticamente in base alla combinazione di DPU (o NumberOfWorkers) e il tipo di dipendente.

Standard G.1X G.2X
Il numero massimo di executor Spark (DPU - 1) * 2 - 1 (NumberOfWorkers - 1) (NumberOfWorkers - 1)

Ad esempio, se l'endpoint di sviluppo ha 10 worker e il tipo di worker è G.1X, allora si avranno 9 executor Spark e l'intero cluster avrà 90G di memoria dell'executor, poiché ogni executor avrà 10G di memoria.

Indipendentemente dal tipo di worker specificato, verrà attivata l'allocazione dinamica delle risorse Spark. Se un set di dati è abbastanza grande, Spark potrebbe allocare tutti gli executor a una singola sessione Livy poiché spark.dynamicAllocation.maxExecutors non è configurata per impostazione predefinita. Ciò significa che altre sessioni Livy sullo stesso endpoint di sviluppo attenderanno per l'avvio di nuovi executor. Se il set di dati è piccolo, Spark sarà in grado di allocare gli esecutori a più sessioni Livy contemporaneamente.

Nota

Per ulteriori informazioni sull'allocazione delle risorse in diversi casi d'uso e su come impostare una configurazione che modifichi il funzionamento, consulta Configurazione avanzata: condivisione degli endpoint di sviluppo tra più utenti.