Effectuer le scaling des clusters Dataproc

Après avoir créé un cluster Cloud Dataproc, vous pouvez définir sur celui-ci un "scaling", c'est-à-dire l'ajuster en augmentant ou en diminuant le nombre de nœuds de calcul primaires ou secondaires qu'il contient. Vous pouvez procéder au scaling d'un cluster Cloud Dataproc à n'importe quel moment, même lorsqu'il contient des tâches en cours d'exécution. Vous ne pouvez pas modifier le type de machine d'un cluster existant (scaling vertical). Pour effectuer un scaling vertical, créez un cluster à l'aide d'un type de machine compatible, puis migrez les tâches vers le nouveau cluster.

Pourquoi procéder au scaling d'un cluster Dataproc ?

  1. Pour augmenter le nombre de nœuds de calcul et ainsi augmenter la rapidité d'exécution d'une tâche.
  2. Pour diminuer le nombre de nœuds de calcul et faire des économies (consultez notamment la section Mise hors service concertée, ce qui permet de ne pas perdre le travail en cours lors de la réduction de la taille d'un cluster).
  3. Pour augmenter le nombre de nœuds afin d'étendre l'espace de stockage HDFS (système de fichiers distribué Hadoop) disponible.

Comme il est possible de procéder au scaling d'un cluster plusieurs fois, vous pouvez augmenter/diminuer la taille du cluster en une fois, puis diminuer/augmenter sa taille ultérieurement.

Utiliser le scaling

Vous pouvez procéder au scaling de votre cluster Dataproc de trois manières :

  1. Utilisez l'outil de ligne de commande gcloud dans la gcloud CLI.
  2. Modifiez la configuration du cluster dans la console Google Cloud.
  3. Utilisez l'API REST.

Les nœuds de calcul récemment ajoutés à un cluster utiliseront le même type de machine que les nœuds de calcul existants. Par exemple, si un cluster est créé avec des nœuds de calcul utilisant le type de machine n1-standard-8, les nouveaux nœuds de calcul utiliseront également le type de machine n1-standard-8.

Vous pouvez ajuster le nombre de nœuds de calcul primaires, le nombre de nœuds de calcul secondaires (préemptifs), ou les deux. Ainsi, si vous ne modifiez que le nombre de nœuds de calcul préemptifs, le nombre de nœuds de calcul primaires reste inchangé.

gcloud

Pour procéder au scaling d'un cluster avec gcloud dataproc clusters update, exécutez la commande suivante.
gcloud dataproc clusters update cluster-name \
    --region=region \
    [--num-workers and/or --num-secondary-workers]=new-number-of-workers
cluster-name correspond au nom du cluster à mettre à jour et new-number-of-workers correspond au nombre mis à jour de nœuds de calcul primaires et/ou secondaires. Par exemple, pour procéder au scaling d'un cluster nommé "dataproc-1" afin qu'il exploite cinq nœuds de calcul primaires, exécutez la commande suivante :
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

Consultez la page concernant clusters.patch.

Exemple

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

Une fois le cluster créé, vous pouvez procéder à son scaling en ouvrant sa page Détails du cluster depuis la page Clusters de la console Google Cloud, puis en cliquant sur le bouton Modifier de l'onglet Configuration.
Renseignez une nouvelle valeur dans les champs Worker nodes (Nœuds de calcul) et/ou Preemptible worker nodes (Nœuds de calcul préemptifs). Dans la capture d'écran suivante, ces valeurs ont respectivement été mises à jour sur "5" et "2".
Cliquez sur Enregistrer pour mettre à jour le cluster.

Comment Dataproc sélectionne les nœuds de cluster à supprimer

Sur les clusters créés avec les versions d'image 1.5.83+, 2.0.57+ et 2.1.5+, lors du scaling à la baisse d'un cluster, Dataproc tente de minimiser l'impact de la suppression des nœuds sur l'exécution des applications YARN en supprimant d'abord les nœuds inactifs, non opérationnels et inactifs, puis en supprimant les nœuds avec le moins de nœuds maîtres en cours d'exécution et de conteneurs.

Mise hors service concertée

Lorsque vous réduisez la taille d'un cluster, le travail en cours peut s'arrêter avant la fin. Si vous utilisez Dataproc v 1.2 ou une version ultérieure, vous pouvez utiliser la mise hors service concertée, qui intègre la mise hors service concertée des nœuds YARN pour terminer le travail en cours sur un nœud de calcul avant qu'il soit retiré du cluster Cloud Dataproc.

Mise hors service concertée et nœuds de calcul secondaires

Le groupe de nœuds de calcul préemptifs (secondaires) continue de provisionner ou de supprimer des nœuds de calcul pour atteindre la taille souhaitée, même après qu'une opération de scaling de cluster a été marquée comme étant terminée. Si vous tentez une mise hors service concertée sur un nœud de calcul secondaire et que vous recevez un message d'erreur semblable au suivant :

"Le groupe de nœuds de calcul secondaire ne peut pas être modifié en dehors de Dataproc. Si vous avez récemment créé ou mis à jour ce cluster, attendez quelques minutes avant de procéder à une mise hors service concertée, afin de permettre à toutes les instances secondaires de rejoindre ou de quitter le cluster. Taille attendue du groupe de nœuds de calcul secondaires : x, taille réelle : y",

attendez quelques minutes, puis répétez la demande de mise hors service concertée.

Sachez également que :

  • vous pouvez forcer la mise hors service des nœuds de calcul préemptifs à tout moment ;
  • vous pouvez procéder à la mise hors service concertée des nœuds de calcul primaires à tout moment.

Utiliser la mise hors service concertée

La mise hors service concertée Dataproc intègre la mise hors service concertée des nœuds YARN pour terminer le travail en cours sur un nœud de calcul avant qu'il ne soit supprimé du cluster Cloud Dataproc. Par défaut, la mise hors service concertée est désactivée. Vous pouvez l'activer en définissant un délai avant expiration lorsque vous mettez à jour votre cluster dans le but de le délester d'un ou plusieurs nœuds de calcul.

gcloud

Lorsque vous mettez à jour un cluster dans le but de supprimer un ou plusieurs nœuds de calcul, exécutez la commande gcloud dataproc clusters update avec l'option --graceful-decommission-timeout. Les valeurs du délai (chaîne) peuvent être définies sur "0s" (la valeur par défaut ; mise hors service forcée, et non concertée) ou sur une durée positive exprimée par rapport à l'heure actuelle (par exemple, "3s"). La durée maximale est d'1 jour.
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

Consultez la section concernant clusters.patch.gracefulDecommissionTimeout. Les valeurs du délai (chaîne) peuvent être définies sur "0" (la valeur par défaut ; mise hors service forcée, et non concertée) ou sur une durée en secondes (par exemple, "3s"). La durée maximale est d'1 jour.

Console

Une fois le cluster créé, vous pouvez sélectionner la mise hors service concertée de celui-ci. Pour ce faire, ouvrez la page Détails du cluster correspondante depuis la page Clusters de la console Google Cloud, puis cliquez sur le bouton Modifier de l'onglet Configuration.
Dans la section Graceful Decommissioning (Mise hors service concertée), cochez la case "Use graceful decommissioning" (Utiliser la mise hors service concertée), puis sélectionnez une valeur pour le délai.
Cliquez sur Enregistrer pour mettre à jour le cluster.

Annuler une opération de mise hors service concertée et de scaling à la baisse

Sur les clusters Dataproc créés avec des versions d'image 2.0.57+ ou 2.1.5+, vous pouvez exécuter la commande gcloud dataproc operations cancel ou émettre une requête API Dataproc operations.cancel pour annuler une opération de scaling à la baisse de la mise hors service concertée.

Lorsque vous annulez une opération de mise hors service concertée à la baisse:

  • Les nœuds de calcul à l'état DECOMMISSIONING sont remis en service et passent à l'état ACTIVE une fois l'annulation de l'opération terminée.

  • Si l'opération de scaling à la baisse inclut des mises à jour de libellés, celles-ci risquent de ne pas prendre effet.

Pour vérifier l'état de la requête d'annulation, vous pouvez exécuter la commande gcloud dataproc operations describe ou émettre une requête operations.get de l'API Dataproc. Si l'opération d'annulation réussit, l'état de l'opération interne est marqué comme ANNULÉ.