VM flessibili Dataproc

Le VM flessibili sono una funzionalità di Dataproc che ti consente di specificare elenchi con priorità di tipi di VM per i worker secondari di Dataproc quando crei un cluster Dataproc.

Perché utilizzare VM flessibili?

In precedenza, se un tipo di VM non era disponibile quando inviavi una richiesta di creazione di un cluster, la richiesta non andava a buon fine e dovevi aggiornare la richiesta, lo script o il codice per specificare un tipo di VM "secondo migliore". Questa procedura di nuova richiesta potrebbe richiedere più iterazioni finché non hai specificato un tipo di VM disponibile.

La funzionalità VM flessibile di Dataproc consente di completare la richiesta di creazione del cluster selezionando i tipi di VM worker secondarie dagli elenchi di VM classificate e cercando le zone all'interno della regione del cluster specificata in cui sono disponibili i tipi di VM elencati.

Terminologia

  • Tipo di VM: la famiglia, la capacità di memoria e il numero di core della CPU di un'istanza VM. Dataproc supporta l'utilizzo di tipi di VM predefinite e personalizzate.

  • Worker secondari: i worker secondari non memorizzano dati. Funzionano solo come nodi di elaborazione. Puoi utilizzare worker secondari per scalare l'elaborazione senza scalare l'archiviazione.

Limitazioni e considerazioni

  • Le VM flessibili sono disponibili nelle versioni immagine di Dataproc su Compute Engine 2.0.74+,2.1.22+ e successive.

  • 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 ulteriori informazioni, consulta Come richiedere VM flessibili.

  • La creazione di un cluster con VM flessibili richiede l'utilizzo del posizionamento in zona automatica di Dataproc, che consente a Dataproc di scegliere la zona con la capacità di soddisfare le richieste relative al tipo di VM.

  • Se la richiesta di creazione del cluster include un criterio 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 "qualsiasi prenotazione corrispondente" disponibile, ma non le prenotazioni "specifiche" (vedi Utilizzare le istanze riservate). I tipi di macchine corrispondenti alle prenotazioni vengono selezionati per primi all'interno di un ranking, seguiti dai tipi di VM con il maggior numero di CPU.

  • Dataproc applica le quote di Google Cloud al provisioning flessibile delle VM.

  • Sebbene sia possibile specificare rapporti CPU/memoria diversi per i tipi di worker V principali e secondari in un cluster, questo può comportare un calo delle prestazioni perché viene utilizzato il rapporto CPU/memoria più piccolo come unità 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.

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 ranking pari a 0. All'interno di un elenco, Dataproc dà 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 di worker secondari:

  1. Apri la pagina Dataproc Crea un cluster su Compute Engine nella console Google Cloud.

  2. Il riquadro Configura cluster è selezionato e i campi sono compilati con i valori predefiniti. Puoi modificare il nome suggerito e la regione del cluster, nonché apportare altre modifiche. Assicurati che Qualsiasi sia selezionato come Zona del cluster per consentire al posizionamento in zona automatica 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 preemption dei worker secondari.

    • Fai clic su Aggiungi un worker secondario per ogni ranking di worker secondari, specificando uno o più tipi di macchine da includere in ogni ranking.
  4. 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 worker secondari Dataproc. Il tipo di worker secondario VM flessibile predefinito è Spot, che è un tipo pre-rilascio.

Nel seguente esempio gcloud CLI, Dataproc tenta di eseguire il provisioning dei worker secondari con le VM n2-standard-8 in primo luogo (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 (rango 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 flessibile richiede il posizionamento in una zona automatica di Dataproc per consentire a Dataproc di scegliere la zona in cui sono disponibili i tipi di VM. Se passi un valore vuoto ("") al flag --zone, viene sostituita qualsiasi selezione di zona specificata nel valore predefinito gcloud config list.

  • Dataproc genera proprietà role dei componenti in base ai core e alla memoria della macchina. Puoi sostituire 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 macchine e2-standard-8 assegnate ai nodi worker secondari da 8 a 6:

    --properties="secondary_worker:e2-standard-8:yarn:yarn.nodemanager.resource.cpu-vcores=6"
    

API

Utilizza instanceFlexibilityPolicy.instanceSelectionList come parte di una richiesta dell'API Dataproc clusters.create per specificare un elenco classificato di machineTypes per i worker secondari.

Esempio:

Il seguente snippet JSON da un clusters.create corpo della richiesta di Dataproc specifica i tipi di macchine dei worker secondari per il ranking 0 e 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 proprietà role dei componenti in base ai core e alla memoria delle VM. Puoi eseguire l'override di queste proprietà generate dal sistema aggiungendo SoftwareConfig.properties alla 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"