Dai la priorità ai tipi di VM con le VM flessibili

Le VM flessibili sono una funzionalità di Dataproc che ti consente di specificare elenchi prioritari di tipi di VM per i nodi master, primari e 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 soddisfare la richiesta di creazione del cluster selezionando i tipi di VM master, VM worker primarie e secondarie 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.

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.
  • Nodi master e worker primari: un cluster ha un nodo master e almeno due worker primari.
  • 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 VM flessibile predefinito è una VM spot, che è un tipo prerilasciabile (vedi Worker secondari Dataproc).

Utilizzo

  • Le VM flessibili sono disponibili in Dataproc 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.
  • 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 tua 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.
  • Quando esegui il provisioning di 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 worker V 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, Dataproc seleziona e aggiunge i worker dagli elenchi di VM flessibili che hai fornito quando hai creato il cluster.

Come 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 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 dei worker secondari:

  1. Apri la pagina Dataproc Crea un cluster su Compute Engine nella console Google Cloud .
  2. 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.
  3. Seleziona il riquadro Configura nodi. Nella sezione Nodi worker secondari, specifica il numero e la prerilasciabilità 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.
  4. Dopo aver confermato e specificato i dettagli del cluster nei pannelli di creazione del cluster, fai clic su Crea.

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, principali e secondari.

L'esempio seguente richiede i tipi di VM master, primaria e secondaria con le seguenti priorità:

  • Esegui il provisioning di e2-standard-8 VM se disponibili (ranking 0). Se le macchine e2-standard-8 non sono disponibili, esegui il provisioning di n2-standard-8 VM (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="": 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 sostituisce qualsiasi selezione di zona specificata nel gcloud config list predefinito.

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 primario (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
          }
        ]
      }
    }
  }
}

Esegui l'override delle proprietà della VM flessibile

Dataproc 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_worker o secondary_worker.
  • Separa più proprietà con una virgola.

Esegui il comando gcloud dataproc clusters create seguente per sostituire il 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_worker o secondary_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