Le VM flessibili sono una funzionalità di Managed Service for Apache Spark che ti consente di specificare elenchi di tipi di VM con priorità per i nodi master di Managed Service for Apache Spark, worker primari e worker secondari quando crei un cluster Managed Service for Apache Spark.
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". Questo processo di nuova richiesta poteva comportare più iterazioni finché non specificavi un tipo di VM disponibile.
La funzionalità VM flessibili di Managed Service for Apache Spark consente di soddisfare la richiesta di creazione del cluster selezionando i tipi di VM master, VM worker primari e VM worker secondari dagli elenchi di VM classificati e quindi cercando le zone all'interno della regione del cluster specificata con la disponibilità dei tipi di VM elencati.
Limitazioni
I cluster che utilizzano VM flessibili non possono essere arrestati.
Terminologia
- Tipo di VM: la famiglia, la capacità di memoria e il numero di core CPU di un'istanza VM. Managed Service for Apache Spark supporta l'utilizzo di tipi di VM predefiniti e personalizzati.
- Nodi master e worker primari: un cluster ha un nodo master e almeno due worker primari.
- Worker secondari: Worker secondari sono facoltativi e non archiviano i dati. Funzionano solo come nodi di elaborazione. Puoi utilizzare i worker secondari per scalare il calcolo senza scalare lo spazio di archiviazione. Il tipo di worker secondario VM flessibile predefinito è una VM spot, che è un tipo prerilasciabile (vedi Worker secondari di Managed Service for Apache Spark).
Utilizzo
- Le VM flessibili sono disponibili in Managed Service for Apache Spark
su Compute Engine
2.0.74+,2.1.76+,2.2.42+, e successive versioni delle immagini. - La creazione di cluster con VM flessibili master o worker primari richiede più tempo (circa 32 secondi in più).
- Il nome del cluster non deve superare i 45 caratteri.
- Per tutti i tipi di VM è necessario lo stesso tipo di disco.
- Puoi specificare fino a cinque elenchi di tipi di VM classificati, con un massimo di 10 tipi di VM in un elenco. Per ulteriori informazioni, consulta Come richiedere VM flessibili.
- La creazione di un cluster con VM flessibili richiede l'utilizzo del posizionamento automatico delle zone di Managed Service for Apache Spark, che consente a Managed Service for Apache Spark di scegliere la zona con la capacità di soddisfare le richieste di tipi di VM.
- Se la richiesta di creazione del cluster include un a 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.
- Quando esegue il provisioning delle VM flessibili, Managed Service for Apache Spark utilizza le prenotazioni disponibili "corrispondenti", ma non le prenotazioni "specifiche" (vedi Utilizzare le 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.
- Managed Service for Apache Spark applica Google Cloud quote al provisioning delle VM flessibili.
- Sebbene tu possa specificare rapporti CPU-memoria diversi per i tipi di VM 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 container più piccola.
- Se aggiorni un cluster creato utilizzando VM flessibili, Managed Service for Apache Spark seleziona e aggiunge i worker dagli elenchi di VM flessibili che hai fornito quando hai creato il cluster.
Come richiedere VM flessibili
Puoi specificare le VM flessibili quando crei un cluster Managed Service for Apache Spark utilizzando la Google Cloud console, Google Cloud CLI o l'API Managed Service for Apache Spark.
- 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 ranking di 0. All'interno di un elenco, Managed Service for Apache Spark dà la priorità ai tipi di VM con prenotazioni inutilizzate, seguiti dalle dimensioni delle VM più grandi. 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:
- Apri la pagina Crea un cluster su Compute Engine di Managed Service for Apache Spark nella Google Cloud console.
- Il riquadro Configura cluster è selezionato con i campi compilati con i valori predefiniti. Puoi modificare il nome suggerito e la regione del cluster, nonché apportare altre modifiche. Assicurati che Qualsiasi sia selezionata come zona del cluster per consentire al posizionamento automatico delle zone di Managed Service for Apache Spark di scegliere la zona con la migliore disponibilità dei tipi di VM specificati negli elenchi di VM flessibili.
Seleziona il riquadro Configura nodi. Nelle sezioni Nodi worker e Nodi worker secondari, dopo aver specificato il numero di worker, fai clic su Aggiungi un tipo di macchina classificato per ogni nuovo ranking, specificando uno o più tipi di macchine da includere nel ranking.
Dopo aver confermato e specificato i dettagli del cluster nei riquadri di creazione del cluster, fai clic su Crea.
gcloud
Utilizza il
gcloud dataproc clusters create
comando per aggiungere più flag --master-machine-types, --worker-machine-types e --secondary-worker-machine-types
per specificare gli elenchi di VM flessibili classificati per i worker master, primari e
secondari.
L'esempio seguente richiede i tipi di VM master, primari e secondari con le seguenti priorità:
- Esegui il provisioning delle VM
e2-standard-8se disponibili (ranking 0); se le macchinee2-standard-8non sono disponibili, esegui il provisioning delle VMn2-standard-8(ranking 1).
Poiché il tipo di worker secondario non è specificato, verrà eseguito il provisioning delle VM secondarie spot prerilasciabili.
gcloud dataproc clusters create CLUSTER_NAME \ --region=REGION \ --zone="" \ --master-machine-types="type=e2-standard-8,rank=0" \ --master-machine-types="type=n2-standard-8,rank=1" \ --num-workers=10 \ --worker-machine-types="type=e2-standard-8,rank=0" \ --worker-machine-types="type=n2-standard-8,rank=1" \ --num-secondary-workers=4 \ --secondary-worker-machine-types="type=e2-standard-8,rank=0" \ --secondary-worker-machine-types="type=n2-standard-8,rank=1"
Note:
--zone="": la funzionalità VM flessibili richiede il posizionamento automatico delle zone di Managed Service for Apache Spark per consentire a Managed Service for Apache Spark di scegliere la zona in cui i tipi di VM sono disponibili per l'uso. Il passaggio di un valore vuoto ("") al flag--zoneesegue l'override di qualsiasi selezione di zona specificata ingcloud config listpredefinito.
API
Utilizza instanceFlexibilityPolicy.instanceSelectionList
come parte di una Managed Service for Apache Spark API
clusters.create
richiesta per specificare un elenco classificato di
machineTypes
per i worker master, primari e secondari.
Esempio: il seguente snippet JSON di un clusters.create
corpo della richiesta
specifica i tipi di macchine master (masterConfig), worker primari (workerConfig) e worker secondari
(secondaryWorkerConfig) con i ranking 0 e 1.
{
"projectId": "PROJECT_ID",
"clusterName": "CLUSTER_NAME",
"config": {
"gceClusterConfig": {
"zoneUri": ""
},
"masterConfig": {
"numInstances": 1,
"instanceFlexibilityPolicy": {
"instanceSelectionList": [
{
"machineTypes": ["e2-standard-8"],
"rank": 0
},
{
"machineTypes": ["n2-standard-8"],
"rank": 1
}
]
}
},
"workerConfig": {
"numInstances": 10,
"instanceFlexibilityPolicy": {
"instanceSelectionList": [
{
"machineTypes": ["e2-standard-8"],
"rank": 0
},
{
"machineTypes": ["n2-standard-8"],
"rank": 1
}
]
}
},
"secondaryWorkerConfig": {
"numInstances": 4,
"instanceFlexibilityPolicy": {
"instanceSelectionList": [
{
"machineTypes": ["e2-standard-8"],
"rank": 0
},
{
"machineTypes": ["n2-standard-8"],
"rank": 1
}
]
}
}
}
}
Eseguire l'override delle proprietà delle VM flessibili
Managed Service for Apache Spark imposta le proprietà a livello di cluster. Quando crei un cluster che utilizza VM flessibili, puoi eseguire l'override delle proprietà generate dal sistema per i tipi di VM flessibili worker primari e secondari.
gcloud
Per eseguire l'override delle proprietà quando crei un cluster, utilizza il flag --properties con la seguente sintassi:
--properties="$ROLE:$MACHINE_TYPE:$COMPONENT_PREFIX:$COMPONENT_PROPERTY=$VALUE"
- ROLE può essere
primary_workerosecondary_worker. - Separa più proprietà con una virgola.
Esegui il seguente comando gcloud dataproc clusters create per eseguire l'override del numero di vCPU che YARN alloca per NodeManager sui worker secondari. Questo esempio imposta il valore yarn.nodemanager.resource.cpu-vcores in yarn-site.xml su 6 per tutte le VM worker secondarie e2-standard-8 e n2-standard-8.
gcloud dataproc clusters create CLUSTER_NAME \
--num-workers=10 \
--num-secondary-workers=4 \
--worker-machine-types="type=e2-standard-8,rank=0" \
--worker-machine-types="type=n2-standard-8,rank=1" \
--master-machine-types="type=e2-standard-8,rank=0" \
--master-machine-types="type=n2-standard-8,rank=1" \
--secondary-worker-machine-types="type=e2-standard-8,rank=0" \
--secondary-worker-machine-types="type=n2-standard-8,rank=1" \
--region=us-central1 \
--zone="" \
--properties="secondary_worker:e2-standard-8:yarn:yarn.nodemanager.resource.cpu-vcores=6,secondary_worker:n2-standard-8:yarn:yarn.nodemanager.resource.cpu-vcores=6"
```
API
Per eseguire l'override delle proprietà, definiscile nel campo properties dell'
SoftwareConfig
oggetto nella richiesta di creazione del cluster.
Utilizza la seguente sintassi per la chiave della proprietà:
ROLE:MACHINE_TYPE:COMPONENT_PREFIX:COMPONENT_PROPERTY
- ROLE può essere
primary_workerosecondary_worker.
Il seguente oggetto SoftwareConfig esegue l'override del numero di vCPU che YARN alloca per NodeManager sui worker secondari. Questo esempio imposta il valore yarn.nodemanager.resource.cpu-vcores su 6 per tutte le VM worker secondarie e2-standard-8 e n2-standard-8.
{
"imageVersion":"2.2.42",
"properties": {
"secondary_worker:e2-standard-8:yarn:yarn.nodemanager.resource.cpu-vcores" : "6",
"secondary_worker:n2-standard-8:yarn:yarn.nodemanager.resource.cpu-vcores" : "6"
}
}
```
Passaggi successivi
- Scopri di più sulle proprietà dei cluster Managed Service for Apache Spark.
- Scopri come creare un cluster Managed Service for Apache Spark.