Las máquinas virtuales flexibles son una función de Dataproc que te permite especificar listas priorizadas de tipos de máquinas virtuales para los nodos maestros, primarios y de trabajador secundario de Dataproc al crear un clúster de Dataproc.
¿Por qué usar máquinas virtuales flexibles?
Antes, si un tipo de VM no estaba disponible cuando enviabas una solicitud de creación de clúster, la solicitud fallaba y tenías que actualizar la solicitud, la secuencia de comandos o el código para especificar el tipo de VM "más adecuado". Este proceso de nueva solicitud podría implicar varias iteraciones hasta que especifiques un tipo de VM que esté disponible.
La función de máquinas virtuales flexibles de Dataproc ayuda a que tu solicitud de creación de clústeres se complete correctamente seleccionando los tipos de máquinas virtuales maestras, primarias y secundarias de tus listas de máquinas virtuales ordenadas y, a continuación, buscando zonas en la región del clúster especificada que tengan disponibles los tipos de máquinas virtuales de la lista.
Terminología
- Tipo de VM: la familia, la capacidad de memoria y el número de núcleos de CPU de una instancia de VM. Dataproc admite el uso de tipos de VM predefinidos y personalizados.
- Nodos maestros y de trabajador principal: un clúster tiene un nodo maestro y al menos dos trabajadores principales.
- Trabajadores secundarios: los trabajadores secundarios son opcionales y no almacenan datos. Solo funcionan como nodos de procesamiento. Puedes usar trabajadores secundarios para escalar la computación sin escalar el almacenamiento. El tipo de trabajador secundario de VM flexible predeterminado es una VM de acceso puntual, que es un tipo interrumpible (consulta Trabajadores secundarios de Dataproc).
Uso
- Las VMs flexibles están disponibles en Dataproc en Compute Engine
2.0.74+,2.1.76+,2.2.42+y versiones de imagen posteriores. - La creación de clústeres con máquinas virtuales Flex de trabajador principal o maestro tarda más (aproximadamente 32 segundos más).
- El nombre del clúster no debe superar los 45 caracteres.
- Se requiere el mismo tipo de disco para todos los tipos de VM.
- Puedes especificar hasta cinco listas de tipos de VM ordenadas, con un máximo de 10 tipos de VM por lista. Para obtener más información, consulta Cómo solicitar VMs flexibles.
- Para crear un clúster con máquinas virtuales flexibles, es necesario usar la colocación automática de zonas de Dataproc, que permite a Dataproc elegir la zona que tenga capacidad para satisfacer tus solicitudes de tipo de máquina virtual.
- Si tu solicitud de creación de clúster incluye una política de autoescalado, las VMs flexibles pueden pertenecer a diferentes familias de VMs, pero deben tener la misma cantidad de memoria y el mismo número de núcleos.
- Al aprovisionar máquinas virtuales flexibles, Dataproc consume las reservas disponibles que coincidan, pero no las reservas específicas (consulta Consumir instancias reservadas). Los tipos de máquinas que coinciden con las reservas se seleccionan primero en un rango, seguidos de los tipos de VM con el mayor número de CPUs.
- Dataproc aplica cuotas Google Cloud al aprovisionamiento de máquinas virtuales flexibles.
- Aunque puedes especificar diferentes relaciones entre CPU y memoria para los tipos de V de los trabajadores principales y secundarios de un clúster, esto puede provocar una degradación del rendimiento, ya que la relación entre CPU y 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 añade trabajadores de las listas de VMs flexibles que proporcionaste al crear el clúster.
Cómo solicitar VMs flexibles
Puedes especificar máquinas virtuales flexibles al crear un clúster de Dataproc con la Google Cloud consola, la CLI de Google Cloud o la API de Dataproc.
- Puedes especificar hasta cinco listas de tipos de VM ordenadas, con un máximo de 10 tipos de VM por lista. Las listas con la clasificación más baja tienen la prioridad más alta. De forma predeterminada, las listas de máquinas virtuales 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 de una lista con el mismo número de CPUs se tratan por igual.
Consola
Para crear un clúster con máquinas virtuales flexibles de trabajador secundario, haz lo siguiente:
- Abre la página de Dataproc Crear un clúster en Compute Engine en la Google Cloud consola.
- El panel Configurar clúster está seleccionado y los campos se rellenan con valores predeterminados. Puedes cambiar el nombre sugerido y la región del clúster, así como hacer otros cambios. Asegúrate de que la opción Cualquiera esté seleccionada como zona del clúster para permitir que la colocación automática de zonas de Dataproc elija la zona que tenga la mejor disponibilidad de los tipos de VM especificados en tus listas de VMs flexibles.
- Selecciona el panel Configurar nodos. En la sección Nodos de trabajador secundarios, especifica el número y la capacidad de interrupción de los trabajadores secundarios.
- Haz clic en Añadir un trabajador secundario por cada rango de trabajadores secundarios y especifica uno o varios tipos de máquina que quieras incluir en cada rango.
- Después de confirmar y especificar los detalles del clúster en los paneles de creación de clústeres, haz clic en Crear.
gcloud
Usa el comando
gcloud dataproc clusters create
para añadir varias marcas master-machine-types, worker-machine-types y secondary-worker-machine-types
para especificar listas de VMs flexibles clasificadas para los trabajadores maestros, principales y secundarios.
En el siguiente ejemplo, se solicitan tipos de máquinas virtuales maestras, primarias y secundarias con las siguientes prioridades:
- Aprovisiona
e2-standard-8VMs si están disponibles (rango 0). Si no lo están, aprovisionan2-standard-8VMs (rango 1).e2-standard-8
Como no se ha especificado el tipo de trabajador secundario, se aprovisionarán VMs secundarias de Spot interrumpibles.
gcloud dataproc clusters create CLUSTER_NAME \ --region=REGION \ --zone="" \ --master-machine-types="type=e2-standard-8,rank=0" \ --master-machine-types="type=n2-standard-8,rank=1" \ --num-workers=10 \ --worker-machine-types="type=e2-standard-8,rank=0" \ --worker-machine-types="type=n2-standard-8,rank=1" \ --num-secondary-workers=4 \ --secondary-worker-machine-types="type=e2-standard-8,rank=0" \ --secondary-worker-machine-types="type=n2-standard-8,rank=1"
Notas:
--zone="": La función de VM flexible requiere colocación automática de zonas de Dataproc para que Dataproc pueda elegir la zona que tenga disponibles los tipos de VM que quieras usar. Si se asigna un valor vacío ("") a la marca--zone, se anula cualquier selección de zona especificada en elgcloud config listpredeterminado.
API
Usa instanceFlexibilityPolicy.instanceSelectionList
como parte de una solicitud de la API Dataproc
clusters.create
para especificar una lista ordenada de machineTypes
para los trabajadores maestros, primarios y secundarios.
Ejemplo: El siguiente fragmento de JSON de un clusters.create
cuerpo de solicitud
especifica los tipos de máquina maestro (masterConfig), trabajador principal (workerConfig) y trabajador secundario (secondaryWorkerConfig) con los rangos 0 y 1.
{
"projectId": "PROJECT_ID",
"clusterName": "CLUSTER_NAME",
"config": {
"gceClusterConfig": {
"zoneUri": ""
},
"masterConfig": {
"numInstances": 1,
"instanceFlexibilityPolicy": {
"instanceSelectionList": [
{
"machineTypes": ["e2-standard-8"],
"rank": 0
},
{
"machineTypes": ["n2-standard-8"],
"rank": 1
}
]
}
},
"workerConfig": {
"numInstances": 10,
"instanceFlexibilityPolicy": {
"instanceSelectionList": [
{
"machineTypes": ["e2-standard-8"],
"rank": 0
},
{
"machineTypes": ["n2-standard-8"],
"rank": 1
}
]
}
},
"secondaryWorkerConfig": {
"numInstances": 4,
"instanceFlexibilityPolicy": {
"instanceSelectionList": [
{
"machineTypes": ["e2-standard-8"],
"rank": 0
},
{
"machineTypes": ["n2-standard-8"],
"rank": 1
}
]
}
}
}
}
Anular propiedades de máquinas virtuales Flex
Dataproc define las propiedades a nivel de clúster. Cuando creas un clúster que usa VMs flexibles, puedes anular las propiedades generadas por el sistema para los tipos de VMs flexibles de trabajador principal y secundario.
gcloud
Para anular propiedades al crear un clúster, usa la marca --properties
con la siguiente sintaxis:
--properties="$ROLE:$MACHINE_TYPE:$COMPONENT_PREFIX:$COMPONENT_PROPERTY=$VALUE"
- ROLE puede ser
primary_workerosecondary_worker. - Separa las propiedades con comas.
Ejecuta el siguiente comando gcloud dataproc clusters create para anular el número de vCPUs que YARN asigna a NodeManager en los trabajadores secundarios. En este ejemplo se asigna el valor yarn.nodemanager.resource.cpu-vcores de yarn-site.xml a 6 para todas las VMs de trabajador secundarias e2-standard-8 y n2-standard-8.
gcloud dataproc clusters create CLUSTER_NAME \
--num-workers=10 \
--num-secondary-workers=4 \
--worker-machine-types="type=e2-standard-8,rank=0" \
--worker-machine-types="type=n2-standard-8,rank=1" \
--master-machine-types="type=e2-standard-8,rank=0" \
--master-machine-types="type=n2-standard-8,rank=1" \
--secondary-worker-machine-types="type=e2-standard-8,rank=0" \
--secondary-worker-machine-types="type=n2-standard-8,rank=1" \
--region=us-central1 \
--zone="" \
--properties="secondary_worker:e2-standard-8:yarn:yarn.nodemanager.resource.cpu-vcores=6,secondary_worker:n2-standard-8:yarn:yarn.nodemanager.resource.cpu-vcores=6"
API
Para anular propiedades, defínelas en el campo properties del objeto SoftwareConfig de tu solicitud de creación de clúster.
Utilice la siguiente sintaxis para la clave de la propiedad:
ROLE:MACHINE_TYPE:COMPONENT_PREFIX:COMPONENT_PROPERTY
- ROLE puede ser
primary_workerosecondary_worker.
El siguiente objeto SoftwareConfig anula el número de vCPUs que YARN asigna a NodeManager en los trabajadores secundarios. En este ejemplo, se asigna el valor 6 a yarn.nodemanager.resource.cpu-vcores
para todas las VMs de trabajador secundario e2-standard-8 y n2-standard-8.
{
"imageVersion":"2.2.42",
"properties": {
"secondary_worker:e2-standard-8:yarn:yarn.nodemanager.resource.cpu-vcores" : "6",
"secondary_worker:n2-standard-8:yarn:yarn.nodemanager.resource.cpu-vcores" : "6"
}
}
Siguientes pasos
- Consulta más información sobre las propiedades de los clústeres de Dataproc.
- Consulta cómo crear un clúster de Dataproc.