Configurazione del cluster Managed Service per Apache Spark

In Cloud Data Fusion, la configurazione del cluster si riferisce alla definizione di come le pipeline di elaborazione dei dati utilizzano le risorse di calcolo durante l'esecuzione dei job Spark su Managed Service for Apache Spark. Questa pagina descrive gli approcci principali alla configurazione del cluster.

Cluster temporanei predefiniti (consigliato)

L'utilizzo dei cluster predefiniti è l'approccio consigliato per le pipeline Cloud Data Fusion.

  • Cloud Data Fusion esegue automaticamente il provisioning e la gestione dei cluster Managed Service for Apache Spark temporanei per ogni esecuzione della pipeline. Crea un cluster all'inizio dell'esecuzione della pipeline e lo elimina al termine dell'esecuzione della pipeline.
  • Vantaggi dei cluster temporanei:
    • Semplicità: non è necessario configurare o gestire manualmente il cluster.
    • Convenienza: paghi solo le risorse utilizzate durante l'esecuzione della pipeline.

Per regolare i cluster e ottimizzare le prestazioni, vedi Dimensionamento dei cluster.

Cluster statici (per scenari specifici)

Nei seguenti scenari, puoi utilizzare i cluster statici:

  • Pipeline a esecuzione prolungata: per le pipeline eseguite continuamente o per periodi prolungati, un cluster statico può essere più conveniente della creazione e dell'eliminazione ripetute di cluster effimeri.
  • Gestione centralizzata dei cluster: se la tua organizzazione richiede un controllo centralizzato sulla creazione di cluster e sulle norme di gestione, i cluster statici possono essere utilizzati insieme a strumenti come Terraform.
  • Tempo di creazione del cluster: quando il tempo necessario per creare un nuovo cluster per ogni pipeline è proibitivo per il tuo caso d'uso.

Tuttavia, i cluster statici richiedono una configurazione più manuale e comportano la gestione del ciclo di vita del cluster.

Per utilizzare un cluster statico, devi impostare le seguenti proprietà sul cluster Managed Service for Apache Spark:

dataproc:dataproc.conscrypt.provider.enable=false
capacity-scheduler:yarn.scheduler.capacity.resource-calculator="org.apache.hadoop.yarn.util.resource.DefaultResourceCalculator"

Opzioni di configurazione del cluster per i cluster statici

Se scegli di utilizzare cluster statici, Cloud Data Fusion offre opzioni di configurazione per i seguenti aspetti:

  • Tipo di macchina worker: specifica il tipo di macchina virtuale per i nodi worker nel cluster. Determina le vCPU e la memoria disponibili per ogni worker.
  • Numero di worker: definisci il numero iniziale di nodi worker nel cluster. Managed Service for Apache Spark potrebbe comunque scalare automaticamente questo numero in base al workload.
  • Zona: seleziona la zona Google Cloud del cluster. La posizione può influire sulla località dei dati e sulle prestazioni di rete.
  • Configurazioni aggiuntive: puoi configurare opzioni avanzate per il cluster statico, ad esempio impostazioni di prerilascio, impostazioni della rete e azioni di inizializzazione.

Best practice

Quando crei un cluster statico per le tue pipeline, utilizza le seguenti configurazioni.

Parametri Descrizione
yarn.nodemanager.delete.debug-delay-sec Conserva i log YARN.
Valore consigliato: 86400 (equivalente a un giorno)
yarn.nodemanager.pmem-check-enabled Consente a YARN di verificare i limiti di memoria fisica ed eliminare i container se superano la memoria fisica.
Valore consigliato: false
yarn.nodemanager.vmem-check-enabled Consente a YARN di verificare i limiti di memoria virtuale e di terminare i container se superano la memoria fisica.
Valore consigliato: false
dataproc.scheduler.driver-size-mb L'impronta di memoria media del driver fa sì che Managed Service for Apache Spark metta in coda il job se il nodo master non dispone di memoria sufficiente per eseguire il processo del driver. Ciò può influire sulla concorrenza dei job, ma può essere mitigato utilizzando un nodo master con più memoria.
Valore consigliato: 2048

Per saperne di più, consulta Esegui una pipeline su un cluster Managed Service for Apache Spark esistente.

Riutilizzo dei cluster

Puoi riutilizzare i cluster Managed Service per Apache Spark tra le esecuzioni per migliorare il tempo di elaborazione. Il riutilizzo del cluster viene implementato in un modello simile al pooling di connessioni o al pooling di thread. Qualsiasi cluster viene mantenuto attivo per un periodo di tempo specificato dopo il completamento dell'esecuzione. Quando viene avviata una nuova esecuzione, il sistema tenta di trovare un cluster inattivo disponibile che corrisponda alla configurazione del profilo di calcolo. Se è presente, verrà utilizzato, altrimenti verrà avviato un nuovo cluster.

Considerazioni per il riutilizzo dei cluster

  • I cluster non sono condivisi. Analogamente al normale modello di provisioning del cluster temporaneo, un cluster esegue una singola esecuzione della pipeline alla volta. Un cluster viene riutilizzato solo se è inattivo.
  • Se abiliti il riutilizzo del cluster per tutte le esecuzioni, il numero necessario di cluster per elaborare tutte le esecuzioni verrà creato in base alle necessità. Analogamente al provisioner effimero di Managed Service per Apache Spark, non esiste un controllo diretto sul numero di cluster creati. Puoi comunque utilizzare le Google Cloud citazioni per gestire le risorse. Ad esempio, se esegui 100 esecuzioni con un massimo di 7 esecuzioni parallele, avrai fino a 7 cluster in un determinato momento.
  • I cluster vengono riutilizzati tra pipeline diverse non appena queste utilizzano lo stesso profilo e condividono le stesse impostazioni del profilo. Se viene utilizzata la personalizzazione del profilo, i cluster verranno comunque riutilizzati, ma solo se le personalizzazioni sono esattamente le stesse, incluse tutte le impostazioni del cluster come l'etichettatura del cluster.

  • Quando il riutilizzo del cluster è abilitato, ci sono due considerazioni principali sui costi:

    • Vengono utilizzate meno risorse per l'avvio e l'inizializzazione del cluster.
    • Vengono utilizzate più risorse per i cluster inattivi tra le esecuzioni della pipeline e dopo l'ultima esecuzione della pipeline.

Sebbene sia difficile prevedere l'effetto sui costi del riutilizzo dei cluster, puoi adottare una strategia per ottenere il massimo risparmio. La strategia consiste nell'identificare un percorso critico per le pipeline concatenate e abilitare il riutilizzo del cluster per questo percorso critico. In questo modo il cluster viene riutilizzato immediatamente, non viene sprecato tempo di inattività e si ottengono i massimi vantaggi in termini di prestazioni.

Abilita il riutilizzo del cluster

Nella sezione Compute Config della configurazione della pipeline di deployment o durante la creazione di un nuovo profilo di calcolo:

  • Attiva l'opzione Ignora eliminazione cluster.
  • Max Idle Time è il tempo massimo durante il quale un cluster attende la successiva pipeline per riutilizzarlo. Il tempo di inattività massimo predefinito è 30 minuti. Per Max Idle Time, valuta il costo rispetto alla disponibilità del cluster per il riutilizzo. Maggiore è il valore di Tempo massimo di inattività, più cluster rimangono inattivi, pronti per l'esecuzione.

Risoluzione dei problemi: compatibilità delle versioni

Problema: la versione dell'ambiente Cloud Data Fusion potrebbe non essere compatibile con la versione del cluster Managed Service for Apache Spark.

Consigliato: esegui l'upgrade all'ultima versione di Cloud Data Fusion e utilizza una delle versioni supportate di Managed Service for Apache Spark.

Le versioni precedenti di Cloud Data Fusion sono compatibili solo con versioni non supportate di Managed Service for Apache Spark. Managed Service per Apache Spark non fornisce aggiornamenti e assistenza per i cluster creati con queste versioni. Anche se puoi continuare a eseguire un cluster creato con una versione non supportata, ti consigliamo di sostituirlo con uno creato con una versione supportata.

Versione di Cloud Data Fusion Versione di Managed Service per Apache Spark
6.11.1 2.3, 2.2***, 2.1
6.10.1.1 2.2***, 2.1, 2.0 *
6.10 2.1, 2.0 *
6,9 2.1, 2.0, 1.5 *
6,7-6,8 2.0, 1.5 *
6,4-6,6 2.0 *, 1.3 **
6,1-6,3 1,3**

* Le versioni 6.4 e successive di Cloud Data Fusion sono compatibili con le versioni supportate di Managed Service for Apache Spark. A meno che non siano necessarie funzionalità specifiche del sistema operativo, la prassi consigliata è specificare la versione dell'immagine major.minor.
Per specificare la versione del sistema operativo utilizzata nel cluster Managed Service for Apache Spark, la versione del sistema operativo deve essere compatibile con una delle versioni di Managed Service for Apache Spark supportate per Cloud Data Fusion nella tabella precedente.

** Le versioni di Cloud Data Fusion da 6.1 a 6.6 sono compatibili con Managed Service for Apache Spark versione 1.3 non supportata.

*** Con questa versione dell'immagine sono stati rilevati alcuni problemi. Questa versione dell'immagine di Managed Service for Apache Spark non è consigliata per l'utilizzo in produzione.

Risoluzione dei problemi: il container è uscito con un codice di uscita diverso da zero 3

Problema: non viene utilizzata una norma di scalabilità automatica e i cluster Managed Service for Apache Spark statici riscontrano problemi di memoria, causando la visualizzazione di un'eccezione di esaurimento della memoria nei log: Container exited with a non-zero exit code 3.

Consigliato: aumenta la memoria dell'executor.

Aumenta la memoria aggiungendo un argomento di runtime task.executor.system.resources.memory alla pipeline. L'argomento di runtime dell'esempio seguente imposta la memoria su 4096 MB:

"task.executor.system.resources.memory": 4096

Per ulteriori informazioni, vedi Dimensionamento del cluster.

Passaggi successivi