Además de usar VMs de Compute Engine estándar como trabajadores de Dataproc (denominados "trabajadores primarios"), los clústeres de Dataproc pueden usar trabajadores secondary
.
Las siguientes características se aplican a todos los trabajadores secundarios de un clúster de Dataproc:
Solo procesamiento: los trabajadores secundarios no almacenan datos. Solo funcionan como nodos de procesamiento. Por lo tanto, puedes usar trabajadores secundarios para escalar la computación sin escalar el almacenamiento.
No se permiten clústeres solo con trabajadores secundarios: tu clúster debe tener trabajadores principales. Si creas un clúster y no especificas el número de trabajadores principales, Dataproc añade dos trabajadores principales al clúster.
Tipo de máquina: de forma predeterminada, los trabajadores secundarios usan el tipo de máquina de los trabajadores principales del clúster. Por ejemplo, si creas un clúster con trabajadores principales que usen tipos de máquina
n1-standard-4
, de forma predeterminada, todos los trabajadores secundarios que se añadan al clúster también usarán máquinasn1-standard-4
.En lugar de usar el tipo de máquina de trabajador principal predeterminado para los trabajadores secundarios, puedes especificar una o varias listas ordenadas de tipos de máquinas para los trabajadores secundarios. Para obtener más información, consulta el artículo sobre las VMs flexibles de Dataproc.
Tamaño del disco persistente: de forma predeterminada, los trabajadores secundarios se crean con el tamaño más pequeño entre 1000 GB y el tamaño del disco de arranque del trabajador principal. Este espacio en disco se usa para almacenar datos en caché de forma local y no está disponible a través de HDFS. Puedes anular el tamaño de disco predeterminado con el comando
gcloud dataproc clusters create --secondary-worker-boot-disk-size
al crear el clúster. Puedes especificar esta marca aunque el clúster no tenga trabajadores secundarios cuando se cree.Creación asíncrona: cuando añades trabajadores secundarios al crear o escalar un clúster, es posible que los trabajadores secundarios no se aprovisionen cuando finalice la operación de creación o actualización. Esto se debe a que Dataproc gestiona los trabajadores secundarios mediante grupos de instancias gestionados (MIGs), que crean máquinas virtuales de forma asíncrona en cuanto se pueden aprovisionar (consulta Comprobar el estado de las instancias gestionadas).
Trabajadores secundarios interrumpibles y no interrumpibles
Hay tres tipos de trabajadores secundarios: máquinas virtuales de acceso puntual, máquinas virtuales interrumpibles estándar y máquinas virtuales no interrumpibles. El tipo de trabajador secundario predeterminado de Dataproc es la VM estándar interrumpible. Puedes especificar una combinación de trabajadores secundarios de instancia de Spot y no interrumpibles.
Por ejemplo, si seleccionas tres trabajadores secundarios al crear un clúster, puedes especificar tres VMs de Spot, tres VMs interrumpibles, tres VMs no interrumpibles o una combinación de trabajadores de Spot y no interrumpibles.
Trabajadores no garantizados
Aunque la posible eliminación de los trabajadores no garantizados puede afectar a la estabilidad de los trabajos, puedes decidir usar instancias no garantizadas para reducir los costes de computación por hora en el caso del procesamiento de datos no críticos o para crear clústeres muy grandes con un coste total más bajo (puedes usar la calculadora de precios de Google Cloud para estimar los costes).
Para obtener los mejores resultados, el número de trabajadores interrumpibles de tu clúster debe ser inferior al 50% del número total de todos los trabajadores (principales y secundarios) del clúster.
Cuando se usan trabajadores de carácter preventivo, es muy probable que tus tareas experimenten un mayor número de fallos transitorios de tareas de un solo trabajador en comparación con las tareas que se ejecutan en trabajadores que no son de carácter preventivo. Para aumentar la tolerancia de los trabajos a los errores de tareas de bajo nivel, puedes definir valores de propiedades de clúster similares a los valores de propiedades predeterminados que se usan con los clústeres de autoescalado para aumentar el número máximo de reintentos de tareas y evitar errores en los trabajos.
.Consideración sobre el ahorro de costes: El uso de máquinas virtuales interrumpibles no siempre supone un ahorro de costes, ya que las interrupciones pueden provocar que las tareas se ejecuten durante más tiempo y, por lo tanto, que los costes sean más elevados. Aunque usar el modo de flexibilidad mejorado (EFM) con máquinas virtuales interrumpibles puede ayudar a mitigar este resultado, el ahorro de costes general de las máquinas virtuales interrumpibles variará en función de cada caso práctico. Por lo general, los trabajos de corta duración son más adecuados para las máquinas virtuales interrumpibles, ya que la probabilidad de que se interrumpan durante la ejecución del trabajo será menor. Prueba diferentes opciones de trabajo, como máquinas virtuales no interrumpibles y máquinas virtuales interrumpibles con EFM, para estimar los costes y encontrar la mejor solución.
Trabajadores no garantizados
- Puedes crear un clúster con trabajadores secundarios no interrumpibles para escalar la computación sin sacrificar la estabilidad de las tareas. Para ello, especifica
non-preemptible
como tipo de trabajador secundario. Puedes combinar trabajadores secundarios no interrumpibles con trabajadores secundarios de instancia de spot.
Seleccionar trabajadores secundarios
Puedes especificar el número y el tipo de trabajadores secundarios al crear un clúster con la consola deGoogle Cloud , la CLI de gcloud o la API de Dataproc.
- Puedes combinar trabajadores secundarios esporádicos con trabajadores secundarios no interrumpibles.
- Puedes actualizar el clúster después de crearlo para cambiar el número, pero no el tipo, de trabajadores secundarios del clúster.
- Las actualizaciones de etiquetas se propagan a todos los trabajadores secundarios no garantizados en un plazo de 24 horas. Las actualizaciones de etiquetas no se propagan a los trabajadores secundarios no interrumpibles. Las actualizaciones de etiquetas se propagan a todos los trabajadores que se añadan a un clúster después de una actualización de etiquetas. Por ejemplo, si aumentas la escala del clúster, todos los trabajadores principales y secundarios nuevos tendrán las etiquetas nuevas.
Consola
Puedes especificar el número de trabajadores secundarios al crear un clúster de Dataproc desde la Google Cloud consola. Una vez creado un clúster, puedes añadir y quitar trabajadores secundarios editando la configuración del clúster desde laGoogle Cloud consola.
Crear un clúster con trabajadores secundarios
Puedes definir el número y el tipo de trabajadores secundarios que se aplicarán a un clúster nuevo en la sección Nodos de trabajador secundarios del panel Configurar nodos de la página Crear un clúster de la consola de Google Cloud Dataproc. Especifica el número y el tipo de trabajadores secundarios en los campos Nodos de trabajador secundarios y Interrumpibilidad, respectivamente.
Actualizar un clúster con instancias secundarias
Para actualizar el número de trabajadores secundarios de un clúster, haz clic en el nombre del clúster en la página Clústeres de la consola Google Cloud . En la página Detalles del clúster. Haga clic en la pestaña **Configuración** y, a continuación, en Editar. Actualice el número del campo Nodos de trabajo secundarios.
Eliminar todas las instancias secundarias de un clúster
Para quitar todos los trabajadores secundarios de un clúster, actualiza la configuración del clúster como se ha explicado anteriormente y especifica 0
en el campo Nodos de trabajador secundario.
Comando de la CLI de Google Cloud
Usa el comando
gcloud dataproc clusters create
para añadir trabajadores secundarios a un clúster cuando se cree.
Una vez creado un clúster, puedes añadir o quitar trabajadores secundarios del clúster con el comando gcloud dataproc clusters update
(se puede actualizar el número, pero no el tipo, de trabajadores secundarios).
Crear un clúster con trabajadores secundarios
Para crear un clúster con trabajadores secundarios, usa el comando
gcloud dataproc clusters create
con el argumento --num-secondary-workers
. Los trabajadores secundarios son máquinas virtuales interrumpibles estándar de forma predeterminada. Puedes especificar trabajadores secundarios no interrumpibles o de aprovisionamiento puntual al crear un clúster. Para ello, define la marca --secondary-worker-type
como `non-preemptible` o `spot`. En los siguientes ejemplos se muestra cómo crear un clúster con cada tipo de trabajador secundario: `preemptible` (predeterminado), de aprovisionamiento puntual (interrumpible) y no interrumpible. Puedes usar marcas adicionales para combinar instancias de tipo spot con trabajadores secundarios no preemptivos.
El siguiente comando crea "cluster1" con dos trabajadores secundarios estándar interrumpibles (tipo predeterminado).
gcloud dataproc clusters create cluster1 \ --num-secondary-workers=2 \ --region=us-central1
El siguiente comando usa la marca secondary-worker-type
para crear "cluster2" con dos trabajadores secundarios de tipo spot (preemptibles).
gcloud dataproc clusters create cluster2 \ --num-secondary-workers=2 \ --secondary-worker-type=spot \ --region=us-central1
Ejemplo 3
El siguiente comando usa la marca secondary-worker-type
para crear "cluster3" con dos
trabajadores secundarios no preemptibles.
gcloud dataproc clusters create cluster3 \ --num-secondary-workers=2 \ --secondary-worker-type=non-preemptible \ --region=us-central1
gcloud dataproc clusters create --secondary-worker-boot-disk-size
al crear el clúster. Esta marca se puede especificar aunque el clúster no tenga ningún trabajador secundario en el momento de la creación.
Deja que la consola Google Cloud cree tu solicitud de creación de clúster.
Puedes hacer clic en los enlaces REST o línea de comandos equivalentes en la parte inferior del panel de la izquierda de la página Crear un clúster de Dataproc para que la consola Google Cloud cree una solicitud de API REST o un comando de la herramienta gcloud equivalentes.
Actualizar un clúster con trabajadores secundarios
Para actualizar un clúster y añadir o quitar trabajadores secundarios, usa el comando
gcloud dataproc clusters update
con la marca --num-secondary-workers
.
El siguiente comando actualiza example-cluster para que use cuatro trabajadores secundarios (del tipo predeterminado o del tipo especificado al crear el clúster).
gcloud dataproc clusters update example-cluster \ --num-secondary-workers=4 \ --region=us-central1
Quitar todos los trabajadores secundarios de un clúster
Para quitar todos los trabajadores secundarios de un clúster, usa el comando gcloud dataproc clusters update
con --num-secondary-workers
definido como 0
.
El siguiente comando elimina todos los trabajadores secundarios de "example-cluster".
gcloud dataproc clusters update example-cluster \ --num-secondary-workers=0 \ --region=us-central1
API REST
Crear un clúster con trabajadores secundarios
Usa la API clusters.create de Dataproc para añadir trabajadores secundarios a un clúster cuando se cree. En los siguientes ejemplos se muestra cómo crear un clúster con cada tipo de trabajador secundario: preemptible
(predeterminado), spot
(preemptible) y non-preemptible
. Puedes usar campos adicionales para combinar instancias de tipo spot con trabajadores secundarios no preemptivos.
La siguiente solicitud POST crea un clúster llamado "cluster1" con dos trabajadores de VM estándar interrumpibles (tipo predeterminado).
POST https://dataproc.googleapis.com/v1/projects/project-id/regions/region/clusters { "clusterName": "cluster1", "config": { "secondaryWorkerConfig": { "numInstances": 2 } } }
La siguiente solicitud POST crea un clúster llamado "cluster2" con dos trabajadores de máquinas virtuales de instancia de spot (preemptibles).
POST https://dataproc.googleapis.com/v1/projects/project-id/regions/region/clusters { "clusterName": "cluster2", "config": { "secondaryWorkerConfig": { "numInstances": 2, "preemptibility": "SPOT" } } }
Ejemplo 3
La siguiente solicitud POST crea "cluster3" con dos trabajadores secundarios no interrumpibles.
POST https://dataproc.googleapis.com/v1/projects/project-id/regions/region/clusters { "clusterName": "cluster3", "config": { "secondaryWorkerConfig": { "numInstances": 2, "preemptibility": "NON_PREEMPTIBLE" } } }
Actualizar un clúster con trabajadores secundarios
Usa la API Dataproc clusters.patch para añadir y quitar trabajadores secundarios.
EjemploLa siguiente solicitud PATCH actualiza un clúster para que tenga cuatro trabajadores secundarios (del tipo predeterminado o del tipo especificado al crear el clúster).
PATCH /v1/projects/project-id/regions/region/clusters/cluster-name?updateMask=config.secondary_worker_config.num_instances { "config": { "secondaryWorkerConfig": { "numInstances": 4 } } }
Solucionar problemas de trabajadores secundarios
Problemas con los permisos de la cuenta de servicio: los trabajadores secundarios se crean a través de un grupo de instancias gestionado. Si hay un problema de permisos, los registros de Dataproc no informarán del error al crear trabajadores secundarios, pero los trabajadores fallidos se mostrarán en la pestaña Instancias de VM de la página Detalles del clúster de la consola deGoogle Cloud sin una marca de verificación verde. Para ver la lista, abre la página Clústeres de Dataproc y, a continuación, haz clic en el nombre del clúster para abrir la página Detalles del clúster.
Problemas con los permisos de grupos de instancias gestionadas: para comprobar si hay algún problema con los permisos de grupos de instancias gestionadas, sigue estos pasos:
- Busca el nombre del grupo de instancias gestionado (
instanceGroupManagerName
).Consola
- Abre la página Clústeres de Dataproc y, a continuación, haz clic en el nombre del clúster para abrir la página Detalles del clúster.
- Haz clic en REST equivalente en la parte inferior de la página y, a continuación, consulta el valor de
config.secondaryWorkerConfig.managedGroupConfig.instanceGroupManagerName
.
Google Cloud CLI
Ejecuta el comandogcloud dataproc clusters describe
con la marca--format
para mostrar elinstanceGroupManagerName
.gcloud dataproc clusters describe CLUSTER_NAME \ --region=REGION \ --format='value(config.secondaryWorkerConfig.managedGroupConfig.instanceGroupManagerName)'
API REST
Envía una solicitudclusters.get
para devolver el valor deconfig.secondaryWorkerConfig.managedGroupConfig.instanceGroupManagerName
. - Consulta los registros en Explorador de registros.
Seleccione el tipo de recurso
Google Compute Engine Instance Group
y filtre por el nombre del grupo de instancias gestionado.También puede aplicar un filtro de registro para `resource.type="gce_instance_group" and
resource.labels.instance_group_name=INSTANCE_GROUP_MANAGER_NAME
.
- Busca el nombre del grupo de instancias gestionado (
Combinar un spot con trabajadores secundarios no interrumpibles
Puedes especificar una combinación de trabajadores secundarios esporádicos y no interrumpibles al crear un clúster de Dataproc.
Ajustes de trabajador secundario para combinar instancias de spot con trabajadores secundarios no interrumpibles
Usa los siguientes ajustes de trabajador secundario al crear un clúster de Dataproc para obtener un nivel mínimo de capacidad de trabajador secundario con la posibilidad de aumentar la capacidad cuando haya disponibles máquinas virtuales de Spot:
Número de trabajadores secundarios: número total de trabajadores secundarios que se van a aprovisionar.
Tipo de trabajador secundario:
spot
es el tipo de trabajador secundario cuando se combinan trabajadores secundarios esporádicos con trabajadores secundarios no interrumpibles.standardCapacityBase: número de trabajadores secundarios no interrumpibles (estándar) que se van a aprovisionar. Los trabajadores secundarios no interrumpibles se aprovisionan antes que otros tipos de trabajadores secundarios.
standardCapacityPercentAboveBase: una vez que se ha alcanzado el número de trabajadores secundarios
standardCapacityBase
, el número restante de trabajadores secundarios necesarios para alcanzar el número total de trabajadores secundarios solicitados se cubre con una combinación de VMs no interrumpibles y de instancia de spot de la siguiente manera:standardCapacityPercentAboveBase
: porcentaje de los trabajadores secundarios restantes que se rellenarán con máquinas virtuales no interrumpibles.- El número restante necesario para alcanzar el número total de trabajadores secundarios solicitados se rellena con VMs esporádicas.
Ejemplo:
- Número de trabajadores secundarios: 15
standardCapacityBase
: 5standardCapacityPercentAboveBase
30%
Resultado:
- No se puede expulsar: 8 = 5 (
standardCapacityBase
) + 3 (30% de los 10 restantes) - Spot: 7 (70% de los 10 restantes)
- Total = 15
Crear un clúster con una combinación de trabajadores secundarios esporádicos y no interrumpibles
Puedes usar la CLI de gcloud o la API de Dataproc para combinar trabajadores secundarios de instancia de spot con trabajadores secundarios no preemptivos al crear un clúster.
gcloud
Ejecuta el siguiente comando de forma local o en Cloud Shell para crear un clúster con una combinación de trabajadores secundarios de instancia de spot y no de instancia de spot.
gcloud dataproc clusters create CLUSTER_NAME \ --project=PROJECT_ID \ --region=REGION \ --secondary-worker-type=spot \ --num-secondary-workers=NUMBER_SECONDARY_WORKERS \ --secondary-worker-standard-capacity-base=STANDARD_CAPACITY_BASE \ --secondary-worker-standard-capacity-percent-above-base=STANDARD_CAPACITY_PERCENT_ABOVE_BASE \ OTHER_FLAGS_AS_NEEDED
Notas:
- CLUSTER_NAME: el nombre del nuevo clúster.
- PROJECT_ID: tu ID de proyecto Google Cloud . Los IDs de proyecto se indican en la sección Información del proyecto del panel de control de la consola Google Cloud .
- REGION: una región de Compute Engine disponible para ejecutar la carga de trabajo.
--secondary-worker-type
: Si combinas trabajadores secundarios de instancia de spot y no interrumpibles, especifica el tipo de trabajador secundario comospot
.- STANDARD_CAPACITY_BASE y STANDARD_CAPACITY_PERCENT_ABOVE_BASE: consulta Ajustes de trabajador secundario para combinar trabajadores secundarios esporádicos con no interrumpibles.
- OTHER_FLAGS_AS_NEEDED: consulta gcloud dataproc clusters create.
API
Para combinar trabajadores secundarios de instancia de spot con trabajadores secundarios no preemptivos, define los campos de la API de Dataproc preemptibility
, standardCapacityBase
y standardCapacityPercentAboveBase
como parte de una solicitud cluster.create, como se muestra en el siguiente ejemplo de JSON:
{ "clusterName": "CLUSTER_NAME", "config": { "secondaryWorkerConfig": { "numInstances": 15, "preemptibility": "spot", "instanceFlexibilityPolicy": { "provisioningModelMix": { "standardCapacityBase": STANDARD_CAPACITY_BASE "standardCapacityPercentAboveBase": STANDARD_CAPACITY_PERCENT_ABOVE_BASE } } } } }
Notas:
- CLUSTER_NAME: el nombre del nuevo clúster.
preemptibility
: Cuando se mezclan trabajadores secundarios de instancia de spot y no interrumpibles, especificaspot
.- STANDARD_CAPACITY_BASE y STANDARD_CAPACITY_PERCENT_ABOVE_BASE: consulta Ajustes de trabajador secundario para combinar trabajadores secundarios esporádicos con no interrumpibles.
Combinar la mezcla de trabajadores secundarios con VMs flexibles
Puedes combinar trabajadores secundarios de tipo spot y no interrumpibles y especificar configuraciones de VM flexibles para los trabajadores secundarios al crear un clúster.
Ejemplo de la CLI gcloud:
gcloud dataproc clusters create cluster-name \ --project=project-id \ --region=us-central1 \ --secondary-worker-type=spot \ --num-secondary-workers=15 \ --secondary-worker-standard-capacity-base=5 \ --secondary-worker-standard-capacity-percent-above-base=30 \ --secondary-worker-machine-types="type=n2-standard-8,rank=0" \ --secondary-worker-machine-types="type=e2-standard-8,type=t2d-standard-8,rank=1" ...other flags as needed
Características de mezcla de trabajadores secundarios
En esta sección se describen algunos de los comportamientos y las características asociados a la combinación de trabajadores secundarios de instancia de spot y no de instancia de spot.
Preferencia de trabajador secundario
Dataproc no da preferencia a las VMs puntuales ni a las no interrumpibles al programar aplicaciones en trabajadores secundarios.
Escalado de trabajadores secundarios
Cuando los trabajadores secundarios se escalan mediante el autoescalado o el escalado manual, Dataproc mantiene la relación entre instancias de spot y no preemptivas solicitada cuando añade trabajadores secundarios.
Actualizar la configuración de mezcla de trabajadores secundarios
Puedes especificar la combinación de trabajadores secundarios de instancia de spot y no interrumpibles al crear un clúster de Dataproc. No puedes cambiar la configuración de la combinación de trabajadores secundarios después de crear el clúster.
Interrupción de trabajadores secundarios esporádicos
- Dataproc no controla los tiempos de la interrupción de las VMs de acceso puntual (consulta Interrupción de VMs de acceso puntual).
- Cuando se produce una interrupción de acceso puntual, el grupo de trabajadores secundario puede funcionar con una capacidad reducida temporalmente hasta que Compute Engine vuelva a aprovisionar las VMs interrumpidas.
- Dataproc no añadirá capacidad a un grupo de trabajadores secundarios que supere los ajustes iniciales del grupo.