VM flessibili Dataproc

Le VM flessibili sono una funzionalità di Dataproc che consente di specificare elenchi di priorità di tipi di VM per i worker secondari di Dataproc durante la creazione di un cluster Dataproc.

Perché utilizzare 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 il tipo di VM "next-best". Questo processo di nuova richiesta potrebbe comportare più iterazioni fino a quando 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 quindi cercando zone all'interno della regione specificata del cluster con la disponibilità dei tipi di VM elencati.

Terminologia

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

  • Worker secondari: i worker secondari non archiviano dati. Funzionano solo come nodi di elaborazione. Puoi utilizzare worker secondari per scalare il calcolo senza scalare lo spazio di archiviazione.

Limitazioni e considerazioni

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

  • Durante la versione di anteprima:

    • Puoi specificare VM flessibili solo per worker secondari.
    • Puoi specificare i tipi di worker secondari Spot o non prerilasciabili come VM flessibili, ma non entrambi, nella richiesta di creazione del cluster. Se non specifichi il tipo di worker secondario, Dataproc utilizza le VM spot, che sono prerilasciabili.
  • Puoi specificare fino a cinque elenchi di tipi di VM classificate, 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 della zona automatica Dataproc, che consente a Dataproc di scegliere la zona con la capacità per soddisfare le richieste di tipi 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 di core.

  • Durante il provisioning di VM flessibili, Dataproc utilizza le prenotazioni disponibili "qualsiasi corrispondenza", ma non quelle "specifiche" (consulta la pagina relativa all'utilizzo di istanze riservate). I tipi di macchina che corrispondono alle prenotazioni vengono selezionati prima 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.

  • Anche se puoi specificare diversi rapporti CPU/memoria per i tipi V di worker principali e secondari in un cluster, questo può portare a un peggioramento delle prestazioni perché il rapporto CPU/memoria minimo viene utilizzato come unità container più piccola.

  • Se aggiorni un cluster creato utilizzando VM flessibili, Dataproc seleziona e aggiunge worker dagli elenchi di VM flessibili forniti al momento della 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 classificate, 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, seguite dalle dimensioni più grandi. I tipi di VM all'interno di un elenco con lo stesso conteggio di CPU vengono trattati allo stesso modo.

Console

Per creare un cluster con VM flessibili worker secondarie:

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

  2. Viene selezionato il riquadro Configura cluster e i campi compilati con i valori predefiniti. Puoi modificare il nome suggerito e la regione del cluster, nonché apportare altre modifiche. Assicurati che sia selezionata l'opzione Qualsiasi come Zona del cluster per consentire al posizionamento della zona automatica Dataproc di scegliere la zona con la migliore disponibilità per i 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 macchina 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 classificate per i worker secondari Dataproc. Il tipo di worker secondario predefinito della VM flessibile è Spot, un tipo prerilasciabile.

Nell'esempio dell'interfaccia alla gcloud CLI seguente, Dataproc tenta prima di eseguire il provisioning dei worker secondari con le 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 le VM e2-standard-8 o t2d-standard-8 (ranking 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 della zona automatica Dataproc per consentire a Dataproc di scegliere la zona per cui sono disponibili per l'uso i tipi di VM. Il passaggio di un valore vuoto ("") al flag --zone sostituisce 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 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"
    

    Nella versione di anteprima, il ruolo secondary_worker è l'unico ruolo supportato.

    Nell'esempio seguente, il flag --properties modifica il numero di core delle macchine e2-standard-8 assegnati 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 clusters.create dell'API Dataproc per specificare un elenco classificato di machineTypes per i worker secondari.

Esempio:

Il seguente snippet JSON di un corpo della richiesta clusters.create 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 le proprietà role dei componenti in base ai core delle VM e alla memoria. 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

Nella versione di anteprima, il ruolo secondary_worker è l'unico ruolo supportato.

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"