Massimizzare la flessibilità e l'efficienza di cluster e job

Questa pagina fornisce best practice e strategie di pianificazione per aiutarti a progettare cluster Managed Service for Apache Spark resilienti che massimizzino l'ottenibilità delle risorse tra Google Cloud le regioni, riducano i ritardi di provisioning e sfruttino le ottimizzazioni di prestazioni e costi.

Panoramica dell'ottenibilità delle risorse

L'esecuzione di job su cluster Managed Service for Apache Spark rigidi crea punti di errore singoli che possono causare interruzioni dei job e errori di cluster e job a causa di indisponibilità localizzate o ritardi di provisioning.

Il rischio di indisponibilità delle risorse è elevato per i cluster configurati con uno dei seguenti anti-pattern rigidi:

  • Posizionamento in zona fissa: codifica hard di una singola zona utilizzando il flag o il campo zone anziché consentire a Managed Service for Apache Spark AutoZone di posizionare dinamicamente il cluster nella zona ottimale. Questo anti-pattern impedisce alla creazione del cluster di utilizzare le risorse di calcolo disponibili nelle zone adiacenti.
  • Singolo tipo o generazione di macchina per ruolo del nodo: limitazione dei ruoli dei nodi a una singola generazione o tipo di macchina. Questo anti-pattern impedisce al cluster di eseguire il fallback ad alternative.
  • Scalabilità verticale con un numero inferiore di VM di grandi dimensioni: scalabilità verticale dei cluster per fare affidamento su un numero ridotto di forme di VM di grandi dimensioni. Questo anti-pattern limita la flessibilità di pianificazione.
  • Creazione di cluster all-or-nothing: richiesta del provisioning simultaneo di tutti i nodi worker anziché l'utilizzo della creazione parziale del cluster abbinata alla scalabilità automatica. Questo anti-pattern causa l'errore della creazione del cluster se non è possibile allocare un nodo worker a causa dell'indisponibilità temporanea delle risorse.
  • Picchi di pianificazione: attivazione di pipeline batch di grandi dimensioni durante le ore di picco di utilizzo, il che aumenta la contesa regionale.

L'ottenibilità delle risorse è la pratica di progettare job che siano flessibili a livello di hardware, multizona e scalabili. Disaccoppiando i cluster dalle configurazioni rigide e abilitando i fallback di più famiglie di macchine, puoi aumentare le percentuali di successo della creazione, ridurre al minimo la latenza di avvio e raggiungere costantemente gli SLA.

Suggerimenti per l'ottenibilità delle risorse

Adotta le seguenti ottimizzazioni per migliorare la disponibilità delle risorse e la stabilità dei job:

Utilizzare VM flessibili

La funzionalità VM flessibili consente di specificare un elenco classificato di tipi di VM per i nodi master, worker primari e secondari. In questo modo, le percentuali di successo della creazione aumentano perché vengono valutati i tipi di VM elencati e le zone con capacità disponibile vengono selezionate automaticamente.

Suggerimento: utilizza le VM flessibili con le sostituzioni dei dischi, che ti consentono di specificare tipi di dischi diversi, come Hyperdisk e disco permanente, per diverse famiglie di macchine candidate nello stesso criterio del cluster. Puoi anche combinare le famiglie di macchine Gen2 e Gen4 in un singolo criterio per scalare i job in un pool più ampio e aggirare i limiti di capacità.

Per i job che utilizzano macchine N2 e N2D, prendi in considerazione le seguenti classifiche:

  • Classifica 0: N2, N2D
  • Classifica 1: N4, N4D (con Hyperdisk bilanciato)
  • Classifica 2: C4, C4D, C3, C3D (con Hyperdisk bilanciato). Le unità SSD locali possono essere utilizzate con C4 e C4D, ma in genere 8 o 16 core supportano solo 1-2 unità SSD locali.
  • Classifica 3: E2 (prestazioni inferiori; utilizzare solo se necessario)

Ad esempio, per i job che utilizzano n2d-standard-16, le classifiche sono:

  • Classifica 0: n2d-standard-16, n2-standard-16
  • Classifica 1: n4-standard-16, n4d-standard-16
  • Classifica 2: c4-standard-16, c4d-standard-16, c3-standard-22, c3d-standard-16
  • Classifica 3: e2-standard-16

Quando utilizzi le VM flessibili, tieni presente i seguenti fattori:

  • Supporto per tipi di dischi misti: i tipi di macchine Gen3 e Gen4 supportano solo i tipi di dischi Hyperdisk e non supportano i tipi di Persistent Disk. Quando combini Gen2 e Gen4, specifica un diskConfig per ogni selezione di istanze in instanceFlexibilityPolicy. Per saperne di più, consulta Sostituzioni dei dischi.

  • Quote di risorse: quando definisci un criterio di VM flessibili con tipi di fallback, Compute Engine controlla le quote per tutti i tipi e i dischi candidati nella regione. Assicurati che il tuo progetto disponga di quote di calcolo e disco sufficienti allocate per tutti gli elementi configurati.

  • Sconti di Compute Engine: approfitta degli sconti per l'utilizzo con impegno flessibili (CUD) per applicare risparmi basati sulla spesa a più famiglie di VM e regioni.

  • Prezzi: utilizza il Google Cloud Calcolatore prezzi per confrontare i costi di ogni classifica nel tuo criterio.

Per i modelli di configurazione e gli esempi di deployment, consulta:

Utilizzare il posizionamento AutoZone

Utilizza il posizionamento AutoZone placement per consentire a Managed Service for Apache Spark di selezionare la zona migliore per il provisioning delle risorse. Se utilizzi reti Virtual Private Cloud (VPC) personalizzate, assicurati che la subnet disponga di indirizzi IP sufficienti in tutte le zone regionali.

Utilizzare forme di macchine più piccole

Progetta i job in modo che vengano scalati orizzontalmente su tipi di macchine più piccoli (4, 8 o 16 core) anziché verticalmente con VM più grandi. Le dimensioni delle VM più piccole hanno una maggiore disponibilità tra le zone, il che contribuisce a evitare ritardi nella creazione.

  • Esamina e riprogetta i job che utilizzano tipi di macchine di grandi dimensioni per i nodi driver.
  • Esamina i job che eseguono solo nodi driver senza nodi worker (cluster a nodo singolo). I job in esecuzione su cluster a nodo singolo non possono fare lo scale up dinamicamente e vincolano l'esecuzione a un singolo host fisico.

Utilizzare la scalabilità automatica dei cluster

Utilizza la scalabilità automatica dei cluster con un numero massimo sufficiente di istanze per gestire la capacità dei job con variabilità delle risorse (picchi).

Utilizzare la creazione parziale del cluster con la scalabilità automatica

Utilizza la creazione parziale del cluster, che ti consente di specificare un numero minimo di worker primari, con la scalabilità automatica. Se il cluster inizia con un numero di worker inferiore a quello richiesto, la scalabilità automatica può aggiungere altri worker in modo dinamico quando le risorse diventano disponibili.

Pianificare i job durante le ore non di punta

Pianifica i job durante le ore non di punta, ad esempio a mezzogiorno e nei fine settimana. Pianifica in orari non standard, ad esempio alle 10:07 anziché alle 10:00, per evitare picchi di pianificazione.

Passaggi successivi