Après avoir créé un cluster Managed Service pour Apache Spark, vous pouvez l'ajuster ("faire évoluer") en augmentant ou en diminuant le nombre de nœuds de calcul principaux ou secondaires (scaling horizontal) dans le cluster. Vous pouvez faire évoluer un cluster Managed Service pour Apache Spark à tout moment, même lorsque des jobs sont en cours d'exécution sur le cluster. 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.
Vous pouvez faire évoluer un cluster Managed Service pour Apache Spark pour les raisons suivantes :
- pour augmenter le nombre de nœuds de calcul afin d'accélérer l'exécution d'un job.
- 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).
- pour augmenter le nombre de nœuds afin d'étendre l'espace de stockage du système de fichiers distribué Hadoop (HDFS) disponible.
Étant donné que les clusters peuvent être redimensionnés plusieurs fois, vous pouvez augmenter ou réduire la taille du cluster à un moment donné, puis la réduire ou l'augmenter ultérieurement.
Recommandations :
Supprimez les nœuds de calcul avec précaution : si vous supprimez des nœuds de calcul de votre cluster, assurez-vous que la nouvelle taille du cluster est suffisante pour gérer votre charge de travail. Si ce n'est pas le cas, vos jobs peuvent prendre beaucoup de temps ou cesser de répondre.
Évitez de faire évoluer les nœuds de calcul principaux : les nœuds de calcul principaux exécutent des DataNodes HDFS, tandis que les nœuds de calcul secondaires sont réservés au calcul. Le scaling des nœuds de calcul principaux comporte des risques. Par exemple, les NameNodes HDFS peuvent présenter plusieurs conditions de concurrence lors des opérations de scaling, ce qui peut entraîner la corruption de HDFS et le blocage indéfini de la mise hors service. Pour en savoir plus, consultez Éviter de faire évoluer les nœuds de calcul principaux.
Utiliser le scaling
Vous pouvez faire évoluer votre cluster Managed Service pour Apache Spark de trois manières :
- Utilisez l'outil de ligne de commande
gclouddans la gcloud CLI. - Modifiez la configuration du cluster dans la consoleGoogle Cloud .
- 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 effectuer un scaling d'un cluster avecgcloud 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
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 qu'un cluster est créé, vous pouvez le redimensionner en ouvrant la page Détails du cluster pour le cluster à partir de la page Clusters de la consoleGoogle Cloud , puis en cliquant sur le bouton Modifier de l'onglet Configuration.
Saisissez une nouvelle valeur pour le nombre de nœuds de calcul et/ou de nœuds de calcul préemptifs (respectivement "5" et "2" dans la capture d'écran suivante).
Cliquez sur Enregistrer pour mettre à jour le cluster.
Comment Managed Service pour Apache Spark 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 de la réduction de la capacité d'un cluster, Managed Service pour Apache Spark tente de minimiser l'impact de la suppression de nœuds sur les applications YARN en cours d'exécution en supprimant d'abord les nœuds inactifs, non opérationnels et inactifs, puis en supprimant les nœuds avec le moins d'applications maîtres YARN et de conteneurs en cours d'exécution.
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 Managed Service pour Apache Spark v1.2 ou une version ultérieure, vous pouvez utiliser la mise hors service progressive, qui intègre la mise hors service progressive des nœuds YARN pour terminer les tâches en cours sur un nœud de calcul avant qu'il ne soit supprimé du cluster Managed Service pour Apache Spark.
Mise hors service progressive 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 de mettre hors service concertée un nœud de calcul secondaire et que vous recevez un message d'erreur semblable à celui-ci :
"Secondary worker group cannot be modified outside of Managed Service for Apache Spark. 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.
Utiliser la mise hors service concertée
La mise hors service progressive de Managed Service pour Apache Spark intègre la mise hors service progressive des nœuds YARN pour terminer les travaux en cours sur un nœud de calcul avant qu'il ne soit supprimé du cluster Managed Service pour Apache Spark. 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 qu'un cluster est créé, vous pouvez sélectionner la mise hors service progressive d'un cluster en ouvrant la page Détails du cluster pour le cluster à partir de la page Clusters de la consoleGoogle Cloud , puis en cliquant sur le bouton Modifier de l'onglet Configuration.
Dans la section Mise hors service concertée, sélectionnez Utiliser la mise hors service concertée, puis sélectionnez une valeur de délai avant expiration.
Cliquez sur Enregistrer pour mettre à jour le cluster.
Annuler une opération de réduction d'échelle avec mise hors service progressive
Sur les clusters Managed Service pour Apache Spark créés avec les versions d'image 2.0.57+ ou 2.1.5+, vous pouvez exécuter la commande gcloud dataproc operations cancel ou envoyer une requête API Managed Service pour Apache Spark operations.cancel pour annuler une opération de scaling à la baisse avec mise hors service progressive.
Lorsque vous annulez une opération de réduction d'échelle avec mise hors service progressive :
Les nœuds de calcul à l'état
DECOMMISSIONINGsont remis en service et passent à l'étatACTIVEà la fin de l'annulation de l'opération.Si l'opération de scaling à la baisse inclut des mises à jour d'étiquettes, celles-ci risquent de ne pas prendre effet.
Pour vérifier l'état de la demande d'annulation, vous pouvez exécuter la commande gcloud dataproc operations describe ou envoyer une requête API Managed Service pour Apache Spark operations.get. Si l'opération d'annulation aboutit, l'état de l'opération interne est marqué comme CANCELLED.