Las VMs flexibles son una función de Dataproc que te permite especificar listas priorizadas de tipos de VM para los trabajadores secundarios de Dataproc cuando creas 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 tu solicitud, secuencia de comandos o código para especificar un tipo de VM "óptimo siguiente". Este proceso de reenvío de la solicitud podría implicar varias iteraciones hasta que especifiques un tipo de VM que esté disponible.
La función de VM flexible de Dataproc ayuda a que tu solicitud de creación de clúster se realice correctamente seleccionando tipos de VM de trabajador secundarios de tus listas de VM clasificadas y, luego, buscando zonas dentro de la región del clúster especificada con disponibilidad de los tipos de VM enumerados.
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 de VM predefinidos y personalizados.
Trabajadores secundarios: Los 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 de la imagen de Dataproc en Compute Engine.Solo puedes especificar VMs flexibles para los trabajadores secundarios.
Puedes especificar hasta cinco listas clasificadas de tipos de VM, con hasta 10 tipos de VM en cada 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 satisfacer tus solicitudes de tipo de VM.
Si tu solicitud de creación de clúster incluye una política de ajuste de escala automático, las VMs flexibles pueden ser de diferentes familias de VM, pero deben tener la misma cantidad de memoria y la misma cantidad de núcleos.
Cuando aprovisiona VMs flexibles, Dataproc consume las reservas disponibles "que coincidan", pero no las reservas "específicas" (consulta Consume instancias reservadas). Primero, se seleccionan los tipos de máquinas que coinciden con las reservas dentro de un rango, seguidos de los tipos de VM con la mayor cantidad de CPU.
Dataproc aplica Google Cloud cuotas al aprovisionamiento flexible de VM.
Si bien puedes especificar diferentes proporciones de CPU a memoria para los tipos de V de trabajadores principales y secundarios en un clúster, esto puede provocar una degradación del rendimiento, ya que 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 proporcionaste cuando creaste el clúster.
Solicita 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 clasificadas de tipos de VM, con hasta 10 tipos de VM en cada lista. Las listas con la clasificación más baja tienen la prioridad más alta. De forma predeterminada, las listas de VM flexibles tienen un rango de 0. En una lista, Dataproc prioriza los tipos de VM 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 por igual.
Console
Para crear un clúster con VMs flexibles de trabajador secundario, haz lo siguiente:
Abre la página de Dataproc Crea un clúster en Compute Engine en la consola de Google Cloud .
El panel Configura el clúster se selecciona con campos completados con valores predeterminados. Puedes cambiar el nombre sugerido y la región del clúster, y realizar otros cambios. Asegúrate de que Cualquiera esté seleccionado como la zona del clúster para permitir que la ubicación de zona automática de Dataproc elija la zona que tenga la mejor disponibilidad de los tipos de VM especificados en tus listas de VM flexibles.
Selecciona el panel Configurar nodos. En la sección Secondary worker nodes, especifica la cantidad y la capacidad de interrupción de los trabajadores secundarios.
- Haz clic en Agregar un trabajador secundario para cada rango de trabajadores secundarios y especifica uno o más tipos de máquinas para incluir en cada rango.
Después de confirmar y especificar los detalles del clúster en los paneles de creación, haz clic en Crear.
gcloud
Usa el comando gcloud dataproc clusters create
para agregar varias marcas secondary-worker-machine-types
y especificar listas clasificadas de VM flexibles para los trabajadores secundarios de Dataproc.
El tipo de trabajador secundario de VM flexible predeterminado es Spot, que es un tipo interrumpible.
En el siguiente ejemplo de gcloud CLI, Dataproc intenta aprovisionar primero trabajadores secundarios con VMs de n2-standard-8
(ranking 0). Si no hay máquinas n2-standard-8 disponibles, Dataproc intentará 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 disponibles los tipos de VM para su uso. Si pasas un valor vacío ("") a la marca--zone
, se anulará cualquier selección de zona especificada en tugcloud config list
predeterminado.Dataproc genera propiedades de
role
de componentes según los núcleos y la memoria de la máquina. Puedes anular estas propiedades generadas por el sistema con la marca--properties
, usando la siguiente sintaxis:--properties="ROLE:MACHINE_TYPE:COMPONENT_PREFIX:COMPONENT_PROPERTY=VALUE"
Solo se admite el rol
secondary_worker
.En el siguiente ejemplo, la marca
--properties
cambia la cantidad de núcleos de las máquinase2-standard-8
asignadas a los nodos trabajadores secundarios de8
a6
:--properties="secondary_worker:e2-standard-8:yarn:yarn.nodemanager.resource.cpu-vcores=6"
API
Usa instanceFlexibilityPolicy.instanceSelectionList
como parte de una solicitud de la API de Dataproc clusters.create
para especificar una lista clasificada de machineTypes para los trabajadores secundarios.
Ejemplo:
El siguiente fragmento JSON de un clusters.create
de Dataproc cuerpo de la solicitud especifica 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 } ] } } }
Usa propiedades del clúster para personalizar los roles de los componentes: Dataproc genera propiedades de role
componentes 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 de clusters.create
con la siguiente sintaxis de key=value
:
ROLE:MACHINE_TYPE:COMPONENT_PREFIX:COMPONENT_PROPERTY=VALUE
Solo se admite el rol secondary_worker
.
En el siguiente ejemplo, el campo properties
cambia la cantidad de núcleos asignados 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"