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 enviabas una solicitud de creación de clúster, la solicitud fallaba y debías actualizar la solicitud, la secuencia de comandos o el código para especificar un tipo de VM “siguiente mejor”. 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: Es 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. Solo funcionan como nodos de procesamiento. Puedes usar trabajadores secundarios para escalar el 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 no especificas el tipo de trabajador secundario, Dataproc usa VMs Spot, que son interrumpibles.
  • Puedes especificar hasta cinco listas de tipos de VM clasificados, con hasta 10 tipos de VM en una lista. Para obtener más información, consulta Cómo solicitar VMs flexibles.

  • La creación de un clúster con VMs flexibles requiere el uso de la ubicación de zona automática de Dataproc, que 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 aprovisionas VMs flexibles, Dataproc consume “cualquier reserva que coincida” disponible, pero no las reservas “específicas” (consulta Cómo 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 para los tipos de VM de trabajo primarios y secundarios en un clúster, esto puede provocar una degradación del rendimiento, ya que la proporción de CPU a memoria más pequeña 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 tu 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 clasificados, 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 VMs flexibles 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 VMs flexibles de trabajadores secundarios, sigue estos pasos:

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

  2. Se selecciona el panel Configura el clúster con campos completados con valores predeterminados. 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 Configure nodes. En la sección Nodos trabajadores secundarios, especifica la cantidad y la interrumpibilidad de los trabajadores secundarios.

    • Haz clic en Agregar un trabajador secundario para cada clasificación de trabajadores secundarios y especifica uno o más tipos de máquinas 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 de trabajador secundario predeterminado de la VM flexible es Spot, que es un tipo interrumpible.

En el siguiente ejemplo de gcloud CLI, Dataproc intenta aprovisionar primero trabajadores secundarios con n2-standard-8 VMs (rango 0). Si no hay máquinas n2-standard-8 disponibles, Dataproc intenta aprovisionar trabajadores secundarios con VMs 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"

Notas:

  • --zone="": La función de VM flexible requiere la ubicación de zona automática de Dataproc para permitir que Dataproc elija la zona que tiene tus tipos de VM disponibles para su uso. Pasar un valor vacío ("") a la marca --zone anula cualquier selección de zona especificada en tu gcloud config list predeterminado.

  • 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 máquinas e2-standard-8 asignadas a nodos de trabajo secundarios de 8 a 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:

En el siguiente fragmento JSON de un clusters.create cuerpo de solicitud de Dataproc, se especifican los tipos de máquinas de los trabajadores secundarios para el rango 0 y el rango 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. Para anular estas propiedades generadas por el sistema, agrega 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"