Escala clústeres

Después de crear un clúster de Dataproc, lo puedes configurar (“escalar”) mediante el aumento o la disminución de la cantidad de nodos trabajadores primarios o secundarios (escalamiento horizontal) en el clúster. Puedes escalar un clúster de Dataproc en cualquier momento, incluso cuando los trabajos están en ejecución. No puedes cambiar el tipo de máquina de un clúster existente (escalamiento vertical). Para escalar verticalmente, crea un clúster con un tipo de máquina compatible y, luego, migra los trabajos al clúster nuevo.

¿Por qué escalar un clúster de Dataproc?

  1. Para aumentar la cantidad de trabajadores a fin de que un trabajo se ejecute más rápido
  2. Para disminuir la cantidad de trabajadores y ahorrar dinero (consulta Retiro de servicio ordenado como una opción que se usa cuando se reduce el tamaño de un clúster a fin de evitar la pérdida de trabajo en progreso)
  3. Para aumentar la cantidad de nodos y expandir el almacenamiento disponible en el sistema de archivos distribuido de Hadoop (HDFS)

Como los clústeres se pueden escalar más de una vez, puedes necesitar aumentar o disminuir el tamaño del clúster en algún momento y volverlo a hacer después.

Usa el escalamiento

Hay tres maneras en las que puedes escalar tu clúster de Dataproc:

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

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

Puedes escalar la cantidad de trabajadores principales o secundarios (interrumpibles), o ambos. Por ejemplo, si solo escalas la cantidad de trabajadores interrumpibles, la cantidad de trabajadores principales permanece igual.

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
En el comando anterior, cluster-name es el nombre del clúster que se actualizará, y new-number-of-workers es la cantidad actualizada de nodos trabajadores principales o secundarios. Por ejemplo, para escalar un clúster llamado “dataproc-1” a fin de usar cinco nodos trabajadores principales, ejecuta el comando siguiente.
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 de 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
}

Console

Después de crear un clúster, lo puedes escalar si abres la página Detalles del clúster desde la página Clústeres en Cloud Console y, luego, haces clic en el botón Editar en la pestaña Configuración.
Ingresa un valor nuevo para la cantidad de nodos trabajadores o nodos trabajadores interrumpibles (actualizados a “5” y “2”, respectivamente, en la captura de pantalla siguiente).
Haz clic en Guardar (Save) para actualizar el clúster.

Retiro de servicio ordenado

Cuando realizas un escalamiento descendente de un clúster, el trabajo en progreso puede terminar antes de completarse. Si usas Dataproc v 1.2 o una versión posterior, puedes usar el retiro de servicio ordenado, que incorpora el retiro de servicio ordenado de nodos YARN para terminar el trabajo en curso en un trabajador antes de quitarlo del clúster de Cloud Dataproc.

Retiro de servicio ordenado y trabajadores secundarios

El grupo de trabajadores interrumpibles (secundarios) continúa con el aprovisionamiento o el borrado de trabajadores a fin de alcanzar el tamaño esperado incluso después de que una operación de escalamiento de clúster se marcó como completada. Si intentas el retiro de servicio ordenado de un trabajador secundario y recibes un mensaje de error similar al siguiente:

“El grupo de trabajadores secundarios no se puede modificar fuera de Dataproc. Si la creación o actualización de este clúster es reciente, espera unos minutos antes de realizar un retiro de servicio ordenado a fin de permitir que todas las instancias secundarias se unan o abandonen el clúster. Tamaño del grupo de trabajadores secundarios esperado: x. Tamaño real: y”,

espera unos minutos y, luego, repite la solicitud de retiro de servicio ordenado.

También ten en cuenta lo siguiente:

  • Puedes realizar un retiro de servicio de manera forzosa de trabajadores interrumpibles en cualquier momento.
  • Puedes realizar un retiro de servicio ordenado de trabajadores principales en cualquier momento

Usa retiro de servicio ordenado

El retiro de servicio ordenado de Dataproc incorpora el retiro de servicio ordenado de nodos YARN para finalizar un trabajo en curso en un trabajador antes de quitarlo del clúster de Cloud Dataproc. Por configuración predeterminada, el retiro de servicio ordenado está inhabilitado. Lo inhabilitas mediante la configuración de un valor de tiempo de espera cuando actualizas tu clúster con el fin de quitar uno o más trabajadores del clúster.

gcloud

Cuando actualices un clúster para quitar uno o más trabajadores, usa el comando gcloud dataproc clusters update con la marca --graceful-decommission-timeout. Los valores del tiempo de espera (string) pueden ser un valor de “0s” (el predeterminado; retiro de servicio a la fuerza no ordenado) o una duración positiva relacionada con 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 de REST

Consulta clusters.patch.gracefulDecommissionTimeout. Los valores del tiempo de espera (string) pueden ser un valor de “0” (el predeterminado; retiro de servicio a la fuerza no ordenado) o una duración en segundos (por ejemplo, “3s”). La duración máxima es de 1 día.

Console

Después de crear un clúster, puedes seleccionar el retiro de servicio ordenado de un clúster si abres la página Detalles del clúster (Cluster details) desde la página de Cloud Console Clústeres y, luego, haces clic en el botón Editar (Edit) en la pestaña Configuración (Configuration).
En la sección Retiro de servicio ordenado (Graceful Decommissioning), marca la casilla “Usa el retiro de servicio ordenado” (Use graceful decommissioning) y, luego, selecciona un valor de tiempo de espera.
Haz clic en Guardar para actualizar el clúster.