Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Configuration de la mise à l'échelle automatique verticale pour Amazon EMR on EKS
Vous pouvez configurer l'autoscaling vertical lorsque vous soumettez des tâches Amazon EMR Spark via StartJobRunl'API. Définissez les paramètres de configuration liés à la mise à l'échelle automatique sur le pod du pilote Spark, comme indiqué dans l'exemple Soumission d'une tâche Spark avec mise à l'échelle automatique verticale.
L'opérateur de mise à l'échelle automatique verticale d'Amazon EMR on EKS écoute les pods de pilotes équipés de la fonctionnalité de mise à l'échelle automatique. Il assure ensuite l'intégration avec Vertical Pod Autoscaler (VPA) de Kubernetes en se basant sur les paramètres de ces pods de pilotes. Cela facilite le suivi des ressources et la mise à l'échelle automatique des pods d'exécuteurs Spark.
Les sections suivantes décrivent les paramètres que vous pouvez utiliser lorsque vous configurez la mise à l'échelle automatique verticale pour votre cluster Amazon EKS.
Note
Configurez le paramètre de basculement de fonctionnalité sous forme d'étiquette et définissez les autres paramètres sous forme d'annotations sur le pod du pilote Spark. Les paramètres de mise à l'échelle automatique appartiennent au domaine emr-containers.amazonaws.com/
et portent le préfixe dynamic.sizing
.
Paramètres requis
Vous devez inclure les deux paramètres ci-dessous dans le pilote de tâche Spark lorsque vous soumettez votre tâche :
Clé | Description | Valeurs acceptées | Valeur par défaut | Type | Paramètre Spark1 |
---|---|---|---|---|---|
|
Basculement de fonctionnalité |
|
non défini |
étiquette |
|
|
Signature de la tâche |
string |
non défini |
annotation |
|
1 Utilisez ce paramètre en tant que SparkSubmitParameter
ou ConfigurationOverride
dans l'API StartJobRun
.
-
dynamic.sizing
– Vous pouvez activer ou désactiver la mise à l'échelle automatique verticale à l'aide de l'étiquettedynamic.sizing
. Pour activer la mise à l'échelle automatique verticale, attribuez àdynamic.sizing
la valeurtrue
sur le pod du pilote Spark. Si vous omettez cette étiquette ou si vous lui attribuez une valeur autre quetrue
, la mise à l'échelle automatique verticale est désactivée. -
dynamic.sizing.signature
– Définissez la signature de la tâche à l'aide de l'annotationdynamic.sizing.signature
sur le pod du pilote. La mise à l'échelle automatique verticale compile les données d'utilisation des ressources sur diverses exécutions de tâches Spark d'Amazon EMR afin de fournir des recommandations concernant les ressources. Vous fournissez l'identifiant unique pour relier les tâches entre elles.Note
Si votre tâche se reproduit à un intervalle fixe, par exemple tous les jours ou toutes les semaines, la signature de votre tâche doit rester la même pour chaque nouvelle instance de la tâche. Cela garantit que la mise à l'échelle automatique verticale peut calculer et agréger les recommandations au cours des différentes étapes de la tâche.
1 Utilisez ce paramètre en tant que SparkSubmitParameter
ou ConfigurationOverride
dans l'API StartJobRun
.
Paramètres facultatifs
La mise à l'échelle automatique verticale prend également en charge les paramètres facultatifs ci-dessous. Définissez-les sous forme d'annotations sur le pod du pilote.
Clé | Description | Valeurs acceptées | Valeur par défaut | Type | Paramètre Spark1 |
---|---|---|---|---|---|
Mode de mise à l'échelle automatique verticale |
|
|
annotation |
|
|
Permet la mise à l'échelle de la mémoire |
|
|
annotation |
|
|
Activer ou désactiver la mise à l'échelle de la CPU |
|
|
annotation |
|
|
Limite minimale de la mise à l'échelle de la mémoire |
chaîne, quantité de ressources K8s1G |
non défini |
annotation |
spark.kubernetes.driver.label.emr-containers.amazonaws.com/dynamic.sizing.scale.memory.min |
|
Limite maximale de mise à l'échelle de la mémoire |
chaîne, quantité de ressources K8s4G |
non défini |
annotation |
spark.kubernetes.driver.label.emr-containers.amazonaws.com/dynamic.sizing.scale.memory.max |
|
Limite minimale de la mise à l'échelle de la CPU |
chaîne, quantité de ressources K8s1 |
non défini |
annotation |
spark.kubernetes.driver.label.emr-containers.amazonaws.com/dynamic.sizing.scale.cpu.min |
|
Limite maximale de la mise à l'échelle de la CPU |
chaîne, quantité de ressources K8s2 |
non défini |
annotation |
spark.kubernetes.driver.label.emr-containers.amazonaws.com/dynamic.sizing.scale.cpu.max |
Modes de mise à l'échelle automatique verticale
Le paramètre mode
correspond aux différents modes de mise à l'échelle automatique pris en charge par VPA. Utilisez l'annotation dynamic.sizing.mode
sur le pod du pilote pour définir le mode. Les valeurs suivantes sont prises en charge pour ce paramètre :
-
Désactivé – Mode de simulation où vous pouvez consulter les recommandations, mais la mise à l'échelle automatique n'est pas effectuée. Il s'agit du mode par défaut pour la mise à l'échelle automatique verticale. Dans ce mode, la ressource Vertical Pod Autoscaler associée calcule les recommandations, et vous pouvez consulter ces recommandations à l'aide d'outils tels que kubectl, Prometheus et Grafana.
-
Initial – Dans ce mode, VPA redimensionne automatiquement les ressources au démarrage de la tâche si des recommandations sont disponibles sur la base de l'historique des exécutions de la tâche, comme dans le cas d'une tâche récurrente.
-
Automatique – Dans ce mode, VPA expulse les pods d'exécuteurs Spark et les met automatiquement à l'échelle avec les paramètres de ressources recommandés lorsque le pod du pilote Spark les redémarre. VPA expulse parfois les pods d'exécuteurs Spark en cours d'exécution, ce qui peut entraîner une latence supplémentaire lorsqu'il réessaie l'exécuteur interrompu.
Mise à l'échelle des ressources
Lorsque vous configurez la mise à l'échelle automatique verticale, vous pouvez choisir de mettre à l'échelle les ressources de CPU et de mémoire. Définissez les annotations dynamic.sizing.scale.cpu
et dynamic.sizing.scale.memory
sur true
ou false
. Par défaut, la mise à l'échelle de la CPU est définie sur false
, et la mise à l'échelle de la mémoire est définie sur true
.
Ressources minimales et maximales (limites)
En option, vous pouvez également définir des limites pour les ressources de CPU et de mémoire. Choisissez une valeur minimale et maximale pour ces ressources avec les annotations dynamic.sizing.[memory/cpu].[min/max]
lorsque vous activez la mise à l'échelle automatique. Par défaut, les ressources ne sont pas limitées. Définissez les annotations sous forme de chaînes représentant une quantité de ressources Kubernetes. Par exemple, définissez dynamic.sizing.memory.max
sur 4G
pour représenter 4 Go.