Le VM flessibili sono una funzionalità di Managed Service for Apache Spark che ti consente di specificare elenchi prioritari di tipi di VM per i nodi master, primari e secondari worker di Managed Service for Apache Spark quando crei un cluster Managed Service for Apache Spark.
Perché utilizzare le VM flessibili?
In precedenza, se un tipo di VM non era disponibile al momento dell'invio di 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 potrebbe comportare più iterazioni finché non hai specificato un tipo di VM disponibile.
La funzionalità VM flessibili di Managed Service for Apache Spark consente di creare il cluster selezionando i tipi di VM master,VM workerr primarie e secondarie dagli elenchi di VM classificati e poi 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.
- I nodi master nei cluster ad alta disponibilità non possono utilizzare VM flessibili, ma i nodi worker del cluster HA possono utilizzare VM flessibili.
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 principali: un cluster ha un nodo master e almeno due worker principali.
- Worker secondari: i worker secondari sono facoltativi e non archiviano dati. Funzionano solo come nodi di elaborazione. Puoi utilizzare i worker secondari per scalare il calcolo senza scalare l'archiviazione. Il tipo di worker secondario flessibile predefinito della VM è 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 versioni successive delle immagini. - La creazione del cluster con VM Flex master o worker primarie richiede più tempo (circa 32 secondi in più).
- Il nome del cluster non deve superare i 45 caratteri.
- È necessario lo stesso tipo di disco per tutti i tipi di VM.
- 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.
- Se la tua richiesta di creazione del cluster include un'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 esegui il provisioning di VM flessibili, Managed Service for Apache Spark 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.
- 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 primarie e secondarie 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 worker dagli elenchi di VM flessibili che hai fornito quando hai creato il cluster.
Consiglio:attiva il posizionamento automatico delle zone di Managed Service for Apache Spark, che consente a Managed Service for Apache Spark di scegliere una zona con la capacità di eseguire il provisioning delle VM richieste.
Come richiedere VM flessibili
Puoi specificare VM flessibili quando crei un cluster Managed Service for Apache Spark 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, Managed Service for Apache Spark assegna la priorità ai tipi di VM con prenotazioni inutilizzate, seguiti dalle dimensioni più grandi delle VM. 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, segui questi passaggi:
- Apri la pagina Crea cluster.
- Fai clic su Configurazione aggiuntiva per espandere la sezione.
- Modifica Worker principali o Worker secondari. In Aggiungi tipi di worker, specifica altre VM classificate.
gcloud
Utilizza il comando
gcloud dataproc clusters create
per aggiungere più flag master-machine-types, worker-machine-types e
secondary-worker-machine-types
per specificare elenchi di VM flessibili classificati per i worker master, primari e
secondari.
L'esempio seguente richiede i tipi di VM master, primaria e secondaria con le seguenti priorità:
- Esegui il provisioning di
e2-standard-8VM se disponibili (ranking 0). Se le macchinee2-standard-8non sono disponibili, esegui il provisioning din2-standard-8VM (ranking 1).
Poiché il tipo di worker secondario non è specificato, verranno sottoposte a provisioning 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="": se imposti questo flag su un valore vuoto, viene attivato il posizionamento automatico delle zone, che consente a Managed Service for Apache Spark di scegliere una zona in cui sono disponibili i tipi di VM richiesti. Questo valore del flag sostituisce qualsiasi selezione di zona specificata nelgcloud config listpredefinito.
API
Utilizza instanceFlexibilityPolicy.instanceSelectionList
nell'ambito di una richiesta
clusters.create
dell'API Dataproc 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 macchina master (masterConfig), worker principale (workerConfig) e worker secondario
(secondaryWorkerConfig) con rango 0 e rango 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à della VM flessibile
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à durante la creazione di 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.
Il seguente comando gcloud dataproc clusters create 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 in
yarn-site.xml su 6 per tutte le VM secondarie
di tipo worker 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 sostituire le proprietà, definiscile nel campo properties dell'oggetto
SoftwareConfig 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 sostituisce il 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à del cluster Managed Service for Apache Spark.
- Scopri come creare un cluster Managed Service for Apache Spark.