VMs flexibles de Dataproc

Las VMs flexibles son una función de Dataproc que permite especificar listas priorizadas de tipos de VM para Dataproc trabajadores secundarios crear un clúster de Dataproc

¿Por qué usar VMs flexibles?

Anteriormente, si un tipo de VM no estaba disponible cuando enviaste una solicitud de creación de clúster, la solicitud falló y tuviste que actualizar tu solicitud, secuencia de comandos o código para especificar Tipo de VM. Esta proceso nuevo de solicitud podría implicar varias iteraciones hasta que especifiques un tipo de VM que estaba disponible.

La función de VM flexible de Dataproc ayuda a crear clústeres de manera correcta seleccionando los tipos de VM de trabajador secundario de tus listas de VM clasificadas y, luego, buscando para zonas dentro de la región de tu clúster especificado con disponibilidad de los tipos de VM de la lista.

Terminología

  • Tipo de VM: La familia, la capacidad de memoria y la cantidad de núcleos de CPU de una instancia de VM. Dataproc admite el uso de tipos predefinidos y personalizados de VMs.

  • Trabajadores secundarios: Trabajadores secundarios no almacenan datos. Funcionan solo como nodos de procesamiento. Puedes usar y secundarios para escalar procesamiento sin escalar el almacenamiento.

Limitaciones y consideraciones

  • Las VMs flexibles están disponibles en Dataproc en Compute Engine 2.0.74+, 2.1.22+ y versiones posteriores Dataproc en Compute Engine versiones de imágenes.

  • Durante la versión preliminar:

    • Puedes especificar VMs flexibles solo para trabajadores secundarios.
    • Puedes especificar Spot o no interrumpible tipos de trabajadores secundarios como VMs flexibles, pero no de ambos, en la solicitud de creación del clúster. Si Si no especificas el tipo de trabajador secundario, Dataproc usa VMs Spot, que son interrumpibles.
  • Puedes especificar hasta cinco listas de tipos de VM clasificadas, con hasta 10 tipos de VM en una lista. Para obtener más información, consulta Cómo solicitar VM flexibles.

  • La creación de un clúster con VMs flexibles requiere el uso de ubicación de la zona automática de Dataproc, Permite que Dataproc elija la zona que tiene la capacidad de entregar tus solicitudes de tipo de VM.

  • Si tu solicitud de creación de clúster incluye un política de ajuste de escala automático, Las VMs flexibles pueden pertenecer a diferentes familias de VM, pero deben tener la misma la cantidad de memoria y el recuento de núcleos.

  • Cuando se aprovisionan VMs flexibles, Dataproc consume “cualquier concordancia” las reservas disponibles, pero no "específicas" reservas (consulta Consumir instancias reservadas). Los tipos de máquinas que coinciden con las reservas primero se seleccionan dentro de una clasificación y, luego, Tipos de VM con la mayor cantidad de CPU.

  • Dataproc aplica cuotas de Google Cloud al aprovisionamiento flexible de VM.

  • Aunque puedes especificar diferentes proporciones de CPU a memoria o tipos de V de trabajadores secundarios en un clúster, esto puede provocar una degradación del rendimiento porque la proporción más pequeña de CPU a memoria se usa como la unidad de contenedor más pequeña.

  • Si actualizas un clúster que se creó con VMs flexibles, Dataproc selecciona y agrega trabajadores de las listas de VM flexibles que que proporcionaste cuando creaste el clúster.

Cómo solicitar VMs flexibles

Puedes especificar VMs flexibles cuando creas un clúster de Dataproc con la consola de Google Cloud, Google Cloud CLI o la API de Dataproc.

  • Puedes especificar hasta cinco listas de tipos de VM clasificadas, con hasta 10 tipos de VM en una lista. Las listas con la clasificación más baja tienen la prioridad más alta. De forma predeterminada, Las listas de VM tienen una clasificación de 0. Dentro de una lista, Dataproc prioriza las VM los tipos con reservas sin usar, seguidos de los tamaños de VM más grandes. Los tipos de VM dentro de una lista con la misma cantidad de CPU se tratan de la misma manera.

Console

Para crear un clúster con VM flexibles de trabajador secundario, sigue estos pasos:

  1. Abre el panel de Dataproc. Crea un clúster en Compute Engine en la consola de Google Cloud.

  2. El panel Configurar clúster está seleccionado con campos completados con campos predeterminados. de salida. Puedes cambiar el nombre sugerido y la región del clúster. realizar otros cambios. Asegúrate de que Cualquiera esté seleccionado como el clúster. Zona para permitir Posición de la zona automática de Dataproc para elegir la zona con la mejor disponibilidad Tipos de VM especificados en tus listas de VMs flexibles.

  3. Selecciona el panel Configurar nodos. En Nodos trabajadores secundarios especifique la cantidad y la interrumpibilidad de los trabajadores secundarios.

    • Haz clic en Agregar un trabajador secundario para cada clasificación de trabajadores secundarios. que especifican uno o más tipos de máquina para incluir en cada clasificación.
  4. Después de confirmar y especificar los detalles del clúster, crea los paneles. Haz clic en Crear.

gcloud

Usa el gcloud dataproc clusters create comando para agregar varias marcas secondary-worker-machine-types para especificar los valores listas de VM flexibles para Trabajadores secundarios de Dataproc. El tipo predeterminado de trabajador secundario de VM flexible es Spot, que es un tipo interrumpible.

En el siguiente ejemplo de gcloud CLI, Dataproc intenta para aprovisionar primero a los trabajadores secundarios con n2-standard-8 VMs (clasificación 0) Si Las máquinas n2-standard-8 no están disponibles; los intentos de Dataproc para aprovisionar a los trabajadores secundarios con e2-standard-8 o t2d-standard-8 VMs (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"

Notas:

  • --zone="": La función de VM flexible requiere Ubicación de la zona automática de Dataproc en para que Dataproc elija la zona que tiene tus Tipos de VM disponibles para su uso. Pasa un valor vacío (“”) para la marca --zone anula cualquier selección de zonas especificada en el valor predeterminado. gcloud config list

  • Dataproc genera propiedades del componente role basadas en máquinas núcleos y memoria. Puedes anular estas propiedades generadas por el sistema con el --properties con la siguiente sintaxis:

    --properties="ROLE:MACHINE_TYPE:COMPONENT_PREFIX:COMPONENT_PROPERTY=VALUE"
    

    En la versión preliminar, la función secondary_worker es la única compatible.

    En el siguiente ejemplo, la marca --properties cambia la cantidad de núcleos. de e2-standard-8 máquinas asignadas a nodos trabajadores secundarios del 8 al 6:

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

API

Usa la instanceFlexibilityPolicy.instanceSelectionList. como parte de una API de Dataproc clusters.create a fin de especificar una lista clasificada de machineTypes para los trabajadores secundarios.

Ejemplo:

El siguiente fragmento de JSON de un clusters.create de Dataproc cuerpo de la solicitud especifica los tipos de máquina de trabajadores secundarios para los rangos 0 y 1.

"config": {
  "secondaryWorkerConfig": {
    "instanceFlexibilityPolicy": {
      "instanceSelectionList": [
        {
          "machineTypes": [
            "n1-standard-4",
            "n2-standard-4"
          ],
          "rank": 0
        },
        {
          "machineTypes": [
            "e2-standard-4",
            "n2d-standard-4"
          ],
          "rank": 1
        }
      ]
    }
  }
}

Usar las propiedades del clúster para personalizar los roles de los componentes: Dataproc Genera propiedades del componente role basadas en la memoria y los núcleos de la VM. Puedes anular estas propiedades generadas por el sistema agregando SoftwareConfig.properties a tu solicitud clusters.create con la siguiente sintaxis key=value:

ROLE:MACHINE_TYPE:COMPONENT_PREFIX:COMPONENT_PROPERTY=VALUE

En la versión preliminar, la función secondary_worker es la única compatible.

En el siguiente ejemplo, el campo properties cambia la cantidad de núcleos. Se asigna al nodo trabajador secundario de una VM e2-standard-8 de 8 a 6:

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