Crea un cluster ad alta ottenibilità

Questo documento descrive come creare un cluster Managed Service for Apache Spark in modalità High Obtainability (HO). La modalità di alta ottenibilità migliora la probabilità di eseguire correttamente il provisioning delle VM del cluster durante periodi di domanda elevata o di vincoli delle risorse, consentendo a Managed Service for Apache Spark di selezionare un tipo di macchina da una gamma di tipi di macchine compatibili anziché richiedere un tipo di macchina fisso durante la creazione di un cluster.

Utilizza la modalità Alta ottenibilità per creare cluster con requisiti di computing per uso generico per evitare errori di creazione e scalabilità dei cluster dovuti alla non disponibilità delle VM.

Come funziona la modalità Alta ottenibilità

Nelle richieste di creazione di cluster standard, specifichi tipi di macchine specifici (ad esempio n2-standard-4) per i nodi del cluster. Se quel tipo di macchina specifico non è disponibile in una zona, la richiesta di creazione non va a buon fine.

In modalità Alta ottenibilità, specifichi requisiti di risorse flessibili per i nodi master, worker primario e worker secondario anziché tipi di macchine fissi:

  • Numero di core vCPU: richiedi un numero target di vCPU per istanza VM (2, 4, 8, 16 o 32 core).
  • Classe hardware: specifica il profilo di prestazioni e memoria:

    • STANDARD: fornisce una configurazione bilanciata con circa 4 GB di memoria per vCPU e livelli di archiviazione permanente standard. I tipi di macchine candidati attuali includono n4-standard, n4d-standard, n2-standard e n2d-standard (preferenza di ranking 0) e c4-standard e c4d-standard (preferenza di ranking 1).
    • PERFORMANCE: fornisce una configurazione ad alte prestazioni con circa 8 GB di memoria per vCPU e configurazioni di dischi di livello superiore (IOPS e throughput più elevati). I tipi di macchine candidati attuali includono n4-highmem, n4d-highmem, n2-highmem e n2d-highmem (preferenza di ranking 0) e c4-highmem e c4d-highmem (preferenza di ranking 1).
  • Numero di istanze: specifica il numero di istanze per ogni gruppo:

    • Master: deve essere 1 istanza.
    • Worker primari: numero intero positivo.
    • Worker secondari: numero intero non negativo.
  • Dimensione disco di avvio: dimensione facoltativa del disco di avvio (ad esempio, 100 GB).

Managed Service for Apache Spark utilizza automaticamente il posizionamento automatico della zona per valutare le zone nella regione del cluster e selezionare i tipi di macchine candidati all'interno della classe hardware richiesta con capacità disponibile.

Requisiti e limitazioni

La modalità High Obtainability presenta i seguenti requisiti e limitazioni:

  • Quote delle risorse: il tuo progetto deve avere quote delle risorse di Compute Engine sufficienti nella regione del cluster per tutte le famiglie di macchine candidate nella classe hardware selezionata (N4, N4D, N2, N2D, C4 e C4D). Poiché i tipi di macchina candidati sottostanti sono controllati da Google e possono cambiare in qualsiasi momento, non fare affidamento su tipi di macchina specifici.
  • Specifica della zona: non puoi specificare un --zone (o zoneUri) esplicito. Managed Service for Apache Spark seleziona automaticamente una zona disponibile nella regione utilizzando il posizionamento Selezione automatica della zona.
  • Esclusività reciproca con configurazioni fisse di macchine e nodi:
    • Quando configuri gruppi di nodi master, worker primari o worker secondari con configurazioni flessibili (--master-flexible-config, --worker-flexible-config o --secondary-worker-flexible-config), non puoi specificare i flag per tipo di macchina standard, selezione delle istanze, numero di istanze, disco o acceleratore per questi gruppi di nodi:
      • Master: non può essere combinato con --master-machine-type, --master-machine-types, --master-instance-selection, --master-instance-flexibility-policy-file, --master-boot-disk-size, --master-boot-disk-type, --num-master-local-ssds, --master-accelerator o --master-min-cpu-platform.
      • Worker primari: non possono essere combinati con --num-workers, --worker-machine-type, --worker-machine-types, --worker-instance-selection, --worker-instance-flexibility-policy-file, --worker-boot-disk-size, --worker-boot-disk-type, --num-worker-local-ssds, --worker-accelerator o --worker-min-cpu-platform.
      • Worker secondari: non possono essere combinati con --num-secondary-workers, --secondary-worker-type, --secondary-worker-machine-types, --secondary-worker-instance-selection, --secondary-worker-instance-flexibility-policy-file, --secondary-worker-boot-disk-size, --secondary-worker-boot-disk-type, --num-secondary-worker-local-ssds o --secondary-worker-accelerator.
    • In un cluster multi-nodo, se la modalità di alta ottenibilità è abilitata per il gruppo di nodi master, anche il gruppo di nodi worker primario deve utilizzare configurazioni flessibili (--worker-flexible-config).
    • Se i worker secondari vengono utilizzati in un cluster ad alta disponibilità, devono utilizzare --secondary-worker-flexible-config anziché i flag dei worker secondari standard.
  • Cluster a nodo singolo: in un cluster a nodo singolo (--single-node o --cluster-type=single-node), è possibile specificare solo --master-flexible-config. I flag di configurazione flessibile dei worker primari e secondari non sono supportati.
  • Aggiornamenti del cluster: puoi aggiornare il numero di istanze (num-instances) per i worker principali e secondari utilizzando gcloud dataproc clusters update. Il numero di core, la classe hardware e le dimensioni del disco di avvio sono specifiche del momento della creazione e non possono essere modificate in un secondo momento.
  • Cluster ad alta affidabilità: i cluster ad alta affidabilità (HA) (cluster con tre nodi master) non sono supportati in modalità Alta disponibilità. Il numero di istanze master deve essere 1.

Crea un cluster ad alta ottenibilità

Puoi creare un cluster in modalità di alta disponibilità utilizzando Google Cloud CLI o l'API Dataproc.

gcloud

Per creare un cluster in modalità High Obtainability, esegui il comando gcloud dataproc clusters create con i flag --master-flexible-config e --worker-flexible-config.

gcloud dataproc clusters create CLUSTER_NAME \
    --region=REGION \
    --master-flexible-config="cores=CORES,hardware-class=HARDWARE_CLASS,num-instances=1,boot-disk-size=BOOT_DISK_SIZE" \
    --worker-flexible-config="cores=CORES,hardware-class=HARDWARE_CLASS,num-instances=NUM_WORKERS,boot-disk-size=BOOT_DISK_SIZE"

Sostituisci quanto segue:

  • CLUSTER_NAME: il nome del cluster.
  • REGION: la regione di Compute Engine per il cluster, ad esempio us-central1. Non specificare un --zone.
  • CORES: il numero di vCPU per istanza VM. Deve essere una potenza di 2 (2, 4, 8, 16 o 32).
  • HARDWARE_CLASS: la classe del profilo hardware, STANDARD o PERFORMANCE.
  • NUM_WORKERS: il numero di nodi worker principali nel cluster.
  • BOOT_DISK_SIZE: le dimensioni del disco di avvio, ad esempio 100GB.

Aggiungi worker secondari

Per aggiungere nodi worker secondari in modalità High Obtainability, includi il flag --secondary-worker-flexible-config:

gcloud dataproc clusters create CLUSTER_NAME \
    --region=REGION \
    --master-flexible-config="cores=4,hardware-class=STANDARD,num-instances=1,boot-disk-size=100GB" \
    --worker-flexible-config="cores=4,hardware-class=STANDARD,num-instances=2,boot-disk-size=100GB" \
    --secondary-worker-flexible-config="cores=4,hardware-class=STANDARD,num-instances=2,boot-disk-size=100GB"

Crea un cluster a nodo singolo

Per creare un cluster ad alta disponibilità a nodo singolo, specifica --single-node (o --cluster-type=single-node) con --master-flexible-config e ometti i flag di configurazione flessibile dei worker:

gcloud dataproc clusters create CLUSTER_NAME \
    --region=REGION \
    --single-node \
    --master-flexible-config="cores=4,hardware-class=STANDARD,boot-disk-size=100GB"

Aggiorna la capacità dei worker del cluster

Per scalare il numero di worker primari o secondari in un cluster ad alta disponibilità esistente, utilizza il comando gcloud dataproc clusters update:

gcloud dataproc clusters update CLUSTER_NAME \
    --region=REGION \
    --worker-flexible-config="num-instances=NEW_NUM_WORKERS"

REST

Per creare un cluster ad alta disponibilità utilizzando l'API REST, invia una richiesta clusters.create. Nell'oggetto ClusterConfig:

  1. Lascia vuoto gceClusterConfig.zoneUri (o omettilo) per attivare il posizionamento Selezione automatica della zona.
  2. Specifica gli oggetti masterFlexibleConfig e workerFlexibleConfig.

Metodo HTTP e URL:

POST https://dataproc.googleapis.com/v1/projects/PROJECT_ID/regions/REGION/clusters

Corpo JSON della richiesta:

{
  "projectId": "PROJECT_ID",
  "clusterName": "CLUSTER_NAME",
  "config": {
    "gceClusterConfig": {
      "zoneUri": ""
    },
    "masterFlexibleConfig": {
      "numInstances": 1,
      "coreCount": 4,
      "hardwareClass": "STANDARD",
      "bootDiskSizeGb": 100
    },
    "workerFlexibleConfig": {
      "numInstances": 2,
      "coreCount": 4,
      "hardwareClass": "STANDARD",
      "bootDiskSizeGb": 100
    }
  }
}

Sostituisci quanto segue:

  • PROJECT_ID: il tuo ID progetto Cloud de Confiance by S3NS .
  • REGION: la regione di Compute Engine in cui verrà creato il cluster, ad esempio us-central1.
  • CLUSTER_NAME: il nome del cluster.

(Facoltativo) Per aggiungere worker secondari, includi l'oggetto secondaryWorkerFlexibleConfig con i valori numInstances, coreCount, hardwareClass e bootDiskSizeGb desiderati.

Passaggi successivi