Crea un clúster de alta disponibilidad

En este documento, se describe cómo crear un clúster de Managed Service para Apache Spark en el modo de alta disponibilidad (HO). El modo de alta disponibilidad mejora la probabilidad de aprovisionar correctamente las VMs del clúster durante períodos de alta demanda o restricciones de recursos, ya que permite que Managed Service para Apache Spark seleccione entre un rango de tipos de máquinas compatibles en lugar de requerir un tipo de máquina fijo cuando se crea un clúster.

Usa el modo de alta disponibilidad para crear clústeres con requisitos de procesamiento de uso general y ayudar a evitar fallas en la creación y el escalamiento de clústeres debido a la falta de disponibilidad de las VM.

Cómo funciona el modo de alta probabilidad de obtención

En las solicitudes de creación de clústeres estándar, especificas tipos de máquinas específicos (como n2-standard-4) para los nodos del clúster. Si ese tipo de máquina específico no está disponible en una zona, la solicitud de creación fallará.

En el modo de alta disponibilidad, especificas requisitos de recursos flexibles para los nodos trabajadores principales, secundarios y principales, en lugar de tipos de máquinas fijos:

  • Recuento de núcleos de CPU virtuales: Solicita una cantidad objetivo de CPU virtuales por instancia de VM (2, 4, 8, 16 o 32 núcleos).
  • Clase de hardware: Especifica el perfil de rendimiento y memoria:

    • STANDARD: Proporciona una configuración equilibrada con aproximadamente 4 GB de memoria por CPU virtual y niveles de almacenamiento persistente estándar. Los tipos de máquinas candidatos actuales incluyen n4-standard, n4d-standard, n2-standard y n2d-standard (preferencia de rango 0), y c4-standard y c4d-standard (preferencia de rango 1).
    • PERFORMANCE: Proporciona una configuración de alto rendimiento con aproximadamente 8 GB de memoria por CPU virtual y configuraciones de disco de nivel superior (IOPS y capacidad de procesamiento más altas). Los tipos de máquinas candidatos actuales incluyen n4-highmem, n4d-highmem, n2-highmem y n2d-highmem (preferencia de rango 0), y c4-highmem y c4d-highmem (preferencia de rango 1).
  • Recuento de instancias: Especifica la cantidad de instancias para cada grupo:

    • Principal: Debe ser 1 instancia.
    • Trabajadores principales: número entero positivo.
    • Trabajadores secundarios: número entero no negativo.
  • Tamaño del disco de arranque: Es el tamaño opcional del disco de arranque (por ejemplo, 100 GB).

Managed Service para Apache Spark usa automáticamente la ubicación de zona automática para evaluar las zonas en la región del clúster y seleccionar los tipos de máquinas candidatos dentro de la clase de hardware solicitada que tengan capacidad disponible.

Requisitos y limitaciones

El modo de alta disponibilidad tiene los siguientes requisitos y limitaciones:

  • Cuotas de recursos: Tu proyecto debe tener suficientes cuotas de recursos de Compute Engine en la región del clúster para todas las familias de máquinas candidatas en la clase de hardware seleccionada (N4, N4D, N2, N2D, C4 y C4D). Debido a que los tipos de máquinas candidatos subyacentes están controlados por Google y pueden cambiar en cualquier momento, no dependas de tipos de máquinas específicos.
  • Especificación de zona: No puedes especificar un --zone (o zoneUri) de forma explícita. Managed Service para Apache Spark selecciona automáticamente una zona disponible en la región con la ubicación de zona automática.
  • Exclusividad mutua con configuraciones fijas de máquinas y nodos:
    • Cuando configuras grupos de nodo trabajador principales, secundarios o principales con parámetros de configuración flexibles (--master-flexible-config, --worker-flexible-config o --secondary-worker-flexible-config), no puedes especificar el tipo de máquina estándar, la selección de instancias, el recuento de instancias, el disco o las marcas de acelerador para esos grupos de nodos:
      • Master: No se puede combinar 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 ni --master-min-cpu-platform.
      • Trabajadores principales: No se puede combinar 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 ni --worker-min-cpu-platform.
      • Trabajadores secundarios: No se pueden combinar 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 ni --secondary-worker-accelerator.
    • En un clúster de varios nodos, si el modo de alta disponibilidad está habilitado para el grupo de nodos principal, el grupo de nodo trabajador principal también debe usar configuraciones flexibles (--worker-flexible-config).
    • Si se usan trabajadores secundarios en un clúster de alta disponibilidad, deben usar --secondary-worker-flexible-config en lugar de las marcas de trabajadores secundarios estándar.
  • Clústeres de un solo nodo: En un clúster de un solo nodo (--single-node o --cluster-type=single-node), solo se puede especificar --master-flexible-config. No se admiten las marcas de configuración flexible de los trabajadores principales y secundarios.
  • Actualizaciones de clústeres: Puedes actualizar la cantidad de instancias (num-instances) para los trabajadores principales y secundarios con gcloud dataproc clusters update. El recuento de núcleos, la clase de hardware y el tamaño del disco de arranque son especificaciones del momento de la creación y no se pueden modificar después de la creación.
  • Clústeres de alta disponibilidad: Los clústeres de alta disponibilidad (HA) (clústeres con tres nodos principales) no se admiten en el modo de alta disponibilidad. El recuento de instancias de la instancia principal debe ser 1.

Crea un clúster de alta disponibilidad

Puedes crear un clúster en el modo de alta disponibilidad con la Google Cloud CLI o la API de Dataproc.

gcloud

Para crear un clúster en modo de alta disponibilidad, ejecuta el comando gcloud dataproc clusters create con las marcas --master-flexible-config y --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"

Reemplaza lo siguiente:

  • CLUSTER_NAME: el nombre del clúster
  • REGION: Es la región de Compute Engine del clúster, como us-central1. No especifiques un --zone.
  • CORES: Es la cantidad de CPU virtuales por instancia de VM. Debe ser una potencia de 2 (2, 4, 8, 16 o 32).
  • HARDWARE_CLASS: Es la clase de perfil de hardware, ya sea STANDARD o PERFORMANCE.
  • NUM_WORKERS: Es la cantidad de nodos trabajadores principales en el clúster.
  • BOOT_DISK_SIZE: el tamaño del disco de arranque, como 100GB.

Agrega trabajadores secundarios

Para agregar nodos trabajadores secundarios en el modo de alta disponibilidad, incluye la marca --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 clúster de un solo nodo

Para crear un clúster de alta disponibilidad de un solo nodo, especifica --single-node (o --cluster-type=single-node) con --master-flexible-config y omite las marcas de configuración flexible de los trabajadores:

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

Actualiza la capacidad de los trabajadores del clúster

Para escalar la cantidad de trabajadores principales o secundarios en un clúster de alta disponibilidad existente, usa el comando gcloud dataproc clusters update:

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

REST

Para crear un clúster de alta disponibilidad con la API de REST, envía una solicitud clusters.create. En el objeto ClusterConfig:

  1. Deja gceClusterConfig.zoneUri vacío (o no lo incluyas) para habilitar la ubicación Zona automática.
  2. Especifica los objetos masterFlexibleConfig y workerFlexibleConfig.

Método HTTP y URL:

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

Cuerpo JSON de la solicitud:

{
  "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
    }
  }
}

Reemplaza lo siguiente:

  • PROJECT_ID: Es el ID del proyecto de Google Cloud .
  • REGION: Es la región de Compute Engine en la que se creará el clúster, como us-central1.
  • CLUSTER_NAME: el nombre del clúster

Opcional: Para agregar trabajadores secundarios, incluye el objeto secondaryWorkerFlexibleConfig con los valores numInstances, coreCount, hardwareClass y bootDiskSizeGb que desees.

¿Qué sigue?