Escalar clústeres de Dataproc

Después de crear un clúster de Dataproc, puedes ajustar su tamaño aumentando o disminuyendo el número de nodos de trabajador principales o secundarios (escalado horizontal). Puedes escalar un clúster de Dataproc en cualquier momento, incluso cuando se estén ejecutando trabajos en el clúster. No puedes cambiar el tipo de máquina de un clúster que ya tengas (escalado vertical). Para escalar verticalmente, crea un clúster con un tipo de máquina compatible y, a continuación, migra los trabajos al nuevo clúster.

Puedes escalar un clúster de Dataproc para lo siguiente:

  1. para aumentar el número de trabajadores y que una tarea se ejecute más rápido.
  2. para reducir el número de trabajadores y ahorrar dinero (consulta la sección Retirada gradual como opción para usar cuando se reduce el tamaño de un clúster y evitar perder el trabajo en curso).
  3. para aumentar el número de nodos y ampliar el almacenamiento disponible del sistema de archivos distribuidos de Hadoop (HDFS).

Como los clústeres se pueden escalar más de una vez, puede que quieras aumentar o reducir el tamaño del clúster en un momento dado y, después, reducirlo o aumentarlo.

Usar el escalado

Hay tres formas de escalar un clúster de Dataproc:

  1. Usa la herramienta de línea de comandos gcloud en gcloud CLI.
  2. Edita la configuración del clúster en la consola deGoogle Cloud .
  3. Utilice la API REST.

Los nuevos trabajadores que se añadan a un clúster usarán el mismo tipo de máquina que los trabajadores que ya estén en el clúster. Por ejemplo, si se crea un clúster con trabajadores que usan el tipo de máquina n1-standard-8, los nuevos trabajadores también usarán el tipo de máquina n1-standard-8.

Puedes escalar el número de trabajadores principales o el de trabajadores secundarios (no garantizados), o ambos. Por ejemplo, si solo ajustas el número de trabajadores preemptivos, el número de trabajadores principales seguirá siendo el mismo.

gcloud

Para escalar un clúster con gcloud dataproc clusters update, ejecuta el siguiente comando:
gcloud dataproc clusters update cluster-name \
    --region=region \
    [--num-workers and/or --num-secondary-workers]=new-number-of-workers
donde cluster-name es el nombre del clúster que se va a actualizar y new-number-of-workers es el número actualizado de nodos de trabajador principales o secundarios. Por ejemplo, para escalar un clúster llamado "dataproc-1" para que use cinco nodos de trabajo principales, ejecuta el siguiente comando.
gcloud dataproc clusters update dataproc-1 \
    --region=region \
    --num-workers=5
...
Waiting on operation [operations/projects/project-id/operations/...].
Waiting for cluster update operation...done.
Updated [https://dataproc.googleapis.com/...].
clusterName: my-test-cluster
...
  masterDiskConfiguration:
    bootDiskSizeGb: 500
  masterName: dataproc-1-m
  numWorkers: 5
  ...
  workers:
  - my-test-cluster-w-0
  - my-test-cluster-w-1
  - my-test-cluster-w-2
  - my-test-cluster-w-3
  - my-test-cluster-w-4
...

API REST

Consulta clusters.patch.

Ejemplo

PATCH /v1/projects/project-id/regions/us-central1/clusters/example-cluster?updateMask=config.worker_config.num_instances,config.secondary_worker_config.num_instances
{
  "config": {
    "workerConfig": {
      "numInstances": 4
    },
    "secondaryWorkerConfig": {
      "numInstances": 2
    }
  },
  "labels": null
}

Consola

Una vez creado un clúster, puedes escalarlo abriendo la página Detalles del clúster del clúster desde la Google Cloud consola página Clústeres, y, a continuación, haciendo clic en el botón Editar de la pestaña Configuración. Introduce un nuevo valor para el número de nodos de trabajador o de nodos de trabajador preemptivos (en la siguiente captura de pantalla, se han actualizado a "5" y "2", respectivamente). Haz clic en Guardar para actualizar el clúster.

Cómo selecciona Dataproc los nodos de clúster que se van a eliminar

En los clústeres creados con versiones de imagen 1.5.83+, 2.0.57+ y 2.1.5+, cuando se reduce la escala de un clúster, Dataproc intenta minimizar el impacto de la eliminación de nodos en las aplicaciones YARN en ejecución. Para ello, primero elimina los nodos inactivos, incorrectos y inactivos, y luego los nodos con el menor número de contenedores y maestros de aplicaciones YARN en ejecución.

Retirada suave

Cuando reduces la escala de un clúster, el trabajo en curso puede detenerse antes de completarse. Si usas Dataproc 1.2 o versiones posteriores, puedes usar la retirada gradual, que incorpora la retirada gradual de nodos de YARN para finalizar el trabajo en curso de un trabajador antes de que se elimine del clúster de Cloud Dataproc.

Retirada suave y trabajadores secundarios

El grupo de trabajadores de reserva sigue aprovisionando o eliminando trabajadores para alcanzar el tamaño esperado incluso después de que se haya completado una operación de escalado del clúster. Si intentas retirar de forma controlada un trabajador secundario y recibes un mensaje de error similar al siguiente:

"Secondary worker group cannot be modified outside of Dataproc. Si has creado o actualizado este clúster recientemente, espera unos minutos antes de retirarlo correctamente para que todas las instancias secundarias puedan unirse al clúster o abandonarlo. Tamaño esperado del grupo de trabajadores secundario: x; tamaño real: y",

espera unos minutos y vuelve a enviar la solicitud de retirada gradual.

Usar retirada suave

La retirada gradual de Dataproc incorpora la retirada gradual de nodos de YARN para finalizar el trabajo en curso de un trabajador antes de que se elimine del clúster de Cloud Dataproc. De forma predeterminada, la retirada suave está inhabilitada. Para habilitarlo, debes definir un valor de tiempo de espera al actualizar el clúster para quitar uno o varios trabajadores del clúster.

gcloud

Cuando actualices un clúster para quitar uno o varios trabajadores, usa el comando gcloud dataproc clusters update con la marca --graceful-decommission-timeout. Los valores de timeout(string) pueden ser "0s" (el valor predeterminado; retirada forzosa, no gradual) o una duración positiva relativa a la hora actual (por ejemplo, "3s"). La duración máxima es de 1 día.
gcloud dataproc clusters update cluster-name \
    --region=region \
    --graceful-decommission-timeout="timeout-value" \
    [--num-workers and/or --num-secondary-workers]=decreased-number-of-workers \
    ... other args ...

API REST

Consulta clusters.patch.gracefulDecommissionTimeout. Los valores de tiempo de espera (cadena) pueden ser "0" (valor predeterminado; retirada forzosa, no gradual) o una duración en segundos (por ejemplo, "3s"). La duración máxima es de 1 día.

Consola

Una vez creado un clúster, puedes seleccionar la retirada gradual de un clúster. Para ello, abre la página Detalles del clúster del clúster en la página Clústeres de la Google Cloud consola y, a continuación, haz clic en el botón Editar de la pestaña Configuración. En la sección Retirada gradual, selecciona Usar retirada gradual y, a continuación, selecciona un valor de tiempo de espera. Haz clic en Guardar para actualizar el clúster.

Cancelar una operación de reducción de escala de retirada suave

En los clústeres de Dataproc creados con versiones de imagen 2.0.57+ o 2.1.5+, puedes ejecutar el comando gcloud dataproc operations cancel o enviar una solicitud operations.cancel a la API de Dataproc para cancelar una operación de reducción de escala con desactivación gradual.

Cuando cancelas una operación de reducción de escala de retirada suave:

  • Los trabajadores en estado DECOMMISSIONING se vuelven a poner en servicio y pasan a estar ACTIVE cuando se completa la cancelación de la operación.

  • Si la operación de reducción incluye actualizaciones de etiquetas, es posible que estas no se apliquen.

Para verificar el estado de la solicitud de cancelación, puedes ejecutar el comando gcloud dataproc operations describe o enviar una solicitud de la API de Dataproc operations.get. Si la operación de cancelación se realiza correctamente, el estado de la operación interna se marca como CANCELLED.