Le VM flessibili sono una funzionalità di Dataproc che ti consente di specificare elenchi prioritari di tipi di VM per i worker secondari di Dataproc quando crei un cluster Dataproc.
Perché utilizzare le VM flessibili
In precedenza, se un tipo di VM non era disponibile quando inviavi una richiesta di creazione del cluster, la richiesta non andava a buon fine e dovevi aggiornare la richiesta, lo script o il codice per specificare un tipo di VM "migliore successivo". Questa procedura di nuova richiesta potrebbe comportare più iterazioni finché non hai specificato un tipo di VM disponibile.
La funzionalità VM flessibili di Dataproc consente di completare la richiesta di creazione del cluster selezionando i tipi di VM worker secondarie dagli elenchi di VM classificati e cercando le zone all'interno della regione del cluster specificata con la disponibilità dei tipi di VM elencati.
Terminologia
Tipo di VM: La famiglia, la capacità di memoria e il numero di core CPU di un'istanza VM. Dataproc supporta l'utilizzo di tipi di VM predefiniti e personalizzati.
Lavoratori secondari: I lavoratori secondari non archiviano dati. Funzionano solo come nodi di elaborazione. Puoi utilizzare i worker secondari per scalare il calcolo senza scalare l'archiviazione.
Limitazioni e considerazioni
Le VM flessibili sono disponibili in Dataproc su Compute Engine
2.0.74+
,2.1.22+
e nelle versioni immagine successive di Dataproc su Compute Engine .Puoi specificare VM flessibili solo per i worker secondari.
Puoi specificare fino a cinque elenchi di tipi di VM classificati, con un massimo di 10 tipi di VM in un elenco. Per saperne di più, consulta Come richiedere VM flessibili.
La creazione di un cluster con VM flessibili richiede l'utilizzo del posizionamento automatico delle zone di Dataproc, che consente a Dataproc di scegliere la zona con la capacità di soddisfare le richieste di tipo di VM.
Se la richiesta di creazione del cluster include una policy di scalabilità automatica, le VM flessibili possono appartenere a famiglie di VM diverse, ma devono avere la stessa quantità di memoria e lo stesso numero di core.
Durante il provisioning delle VM flessibili, Dataproc utilizza le prenotazioni disponibili "corrispondenti", ma non quelle "specifiche" (vedi Utilizzare istanze riservate). I tipi di macchine che corrispondono alle prenotazioni vengono selezionati per primi all'interno di un ranking, seguiti dai tipi di VM con il maggior numero di CPU.
Dataproc applica Google Cloud quote al provisioning flessibile delle VM.
Sebbene sia possibile specificare rapporti CPU-memoria diversi per i tipi di V worker primari e secondari in un cluster, ciò può comportare un peggioramento delle prestazioni perché il rapporto CPU-memoria più piccolo viene utilizzato come unità di contenitore più piccola.
Se aggiorni un cluster creato utilizzando VM flessibili, Dataproc seleziona e aggiunge i worker dagli elenchi di VM flessibili che hai fornito durante la creazione del cluster.
Richiedere VM flessibili
Puoi specificare VM flessibili quando crei un cluster Dataproc utilizzando la console Google Cloud , Google Cloud CLI o l'API Dataproc.
- Puoi specificare fino a cinque elenchi di tipi di VM classificati, con un massimo di 10 tipi di VM in un elenco. Gli elenchi con il ranking più basso hanno la priorità più alta. Per impostazione predefinita, gli elenchi di VM flessibili hanno un rango pari a 0. All'interno di un elenco, Dataproc assegna la priorità ai tipi di VM con prenotazioni inutilizzate, seguiti dalle VM di dimensioni maggiori. I tipi di VM all'interno di un elenco con lo stesso numero di CPU vengono trattati allo stesso modo.
Console
Per creare un cluster con VM flessibili worker secondarie:
Apri la pagina Dataproc Crea un cluster su Compute Engine nella console Google Cloud .
Il riquadro Configura cluster è selezionato con i campi compilati con i valori predefiniti. Puoi modificare il nome suggerito e la regione del cluster e apportare altre modifiche. Assicurati che Qualsiasi sia selezionato come zona del cluster per consentire al posizionamento automatico delle zone di Dataproc di scegliere la zona con la migliore disponibilità dei tipi di VM specificati negli elenchi di VM flessibili.
Seleziona il riquadro Configura nodi. Nella sezione Nodi worker secondari, specifica il numero e la preemptibilità dei worker secondari.
- Fai clic su Aggiungi un worker secondario per ogni grado di worker secondari, specificando uno o più tipi di macchine da includere in ogni grado.
Dopo aver confermato e specificato i dettagli del cluster nei riquadri di creazione del cluster, fai clic su Crea.
gcloud
Utilizza il comando
gcloud dataproc clusters create
per aggiungere più flag secondary-worker-machine-types
per specificare elenchi di VM flessibili classificati
per i worker secondari Dataproc.
Il tipo di worker secondario della VM flessibile predefinito è Spot, che è un tipo prerilasciabile.
Nel seguente esempio di gcloud CLI, Dataproc tenta
di eseguire il provisioning dei worker secondari con VM n2-standard-8
(ranking 0). Se le macchine n2-standard-8 non sono disponibili, Dataproc tenta di eseguire il provisioning dei worker secondari con VM e2-standard-8
o t2d-standard-8
(classifica 1).
gcloud dataproc clusters create CLUSTER_NAME \ --region=REGION \ --zone="" \ --master-machine-type=n1-standard-8 \ --worker-machine-type=n1-standard-8 \ --num-workers=4 \ --num-secondary-workers=4 \ --secondary-worker-type=non-preemptible \ --secondary-worker-machine-types="type=n2-standard-8,rank=0" \ --secondary-worker-machine-types="type=e2-standard-8,type=t2d-standard-8,rank=1"
Note:
--zone=""
: la funzionalità VM flessibili richiede il posizionamento automatico della zona di Dataproc per consentire a Dataproc di scegliere la zona in cui sono disponibili i tipi di VM da utilizzare. Il passaggio di un valore vuoto ("") al flag--zone
esegue l'override di qualsiasi selezione di zona specificata nel tuogcloud config list
predefinito.Dataproc genera proprietà
role
dei componenti in base ai core e alla memoria della macchina. Puoi eseguire l'override di queste proprietà generate dal sistema con il flag--properties
utilizzando la seguente sintassi:--properties="ROLE:MACHINE_TYPE:COMPONENT_PREFIX:COMPONENT_PROPERTY=VALUE"
È supportato solo il ruolo
secondary_worker
.Nell'esempio seguente, il flag
--properties
modifica il numero di core delle macchinee2-standard-8
assegnate ai nodi worker secondari da8
a6
:--properties="secondary_worker:e2-standard-8:yarn:yarn.nodemanager.resource.cpu-vcores=6"
API
Utilizza instanceFlexibilityPolicy.instanceSelectionList
nell'ambito di una richiesta
clusters.create
dell'API Dataproc per specificare un elenco classificato di
machineTypes per i worker secondari.
Esempio:
Il seguente snippet JSON di un clusters.create
corpo Dataproc richiesta
specifica i tipi di macchine dei worker secondari per il rango 0 e il rango 1.
"config": { "secondaryWorkerConfig": { "instanceFlexibilityPolicy": { "instanceSelectionList": [ { "machineTypes": [ "n1-standard-4", "n2-standard-4" ], "rank": 0 }, { "machineTypes": [ "e2-standard-4", "n2d-standard-4" ], "rank": 1 } ] } } }
Utilizza le proprietà del cluster per personalizzare i ruoli dei componenti:Dataproc genera le proprietà dei componenti role
in base ai core e alla memoria delle VM.
Puoi eseguire l'override di queste proprietà generate dal sistema aggiungendo
SoftwareConfig.properties
alla tua richiesta clusters.create
, utilizzando la seguente sintassi key=value
:
ROLE:MACHINE_TYPE:COMPONENT_PREFIX:COMPONENT_PROPERTY=VALUE
È supportato solo il ruolo secondary_worker
.
Nell'esempio seguente, il campo properties
modifica il numero di core
assegnati al nodo worker secondario di una VM e2-standard-8
da 8
a 6
:
"secondary_worker:e2-standard-8:yarn:yarn.nodemanager.resource.cpu-vcores=6"