Activation de la mise à l'échelle automatique d'une application
Il n'est pas toujours possible d'estimer les besoins en ressources (nombre d'exécuteurs Spark) d'une application Spark, car ces exigences peuvent varier en fonction de la taille du fichier d'entrée.
Pour vous aider dans cette situation, vous pouvez soumettre une application Spark avec mise à l'échelle automatique, qui déterminera automatiquement le nombre d'exécuteurs requis par une application basée sur la demande de l'application. Vous
pouvez activer la mise à l'échelle automatique de base pour une application Spark en ajoutant le paramètre de configuration ae.spark.autoscale.enable=true à la configuration d'application existante.
Soumission d'une application avec mise à jour automatique de base
La procédure de soumission d'une application avec mise à l'échelle automatique activée est la même que celle des étapes de soumission d'une application sans la mise à l'échelle automatique. La seule différence est que vous devez ajouter le paramètre
de configuration ae.spark.autoscale.enable=true au contenu de l'application.
- Soumettre une application Spark.
- Utilisez l'exemple de contenu JSON suivant comme exemple pour activer la mise à niveau automatique de base :
{ "application_details": { "application": "/opt/ibm/spark/examples/src/main/python/wordcount.py", "arguments": ["/opt/ibm/spark/examples/src/main/resources/people.txt"] }, "conf": { "ae.spark.autoscale.enable":"true" } }
Configurations de mise à l'échelle automatique des applications
Vous pouvez utiliser les paramètres de configuration suivants pour contrôler la mise à jour automatique du nombre d'exécuteurs.
| Paramètres de configuration | Description | Valeur par défaut |
|---|---|---|
ae.spark.autoscale.enable |
Signale que l'application sera mise à l'échelle automatique en fonction de la demande de l'application et des autres configurations de mise à l'échelle automatique définie. Si elle est spécifiée au niveau de l'instance, toutes les applications de l'instance seront mises à l'échelle automatique. | false |
spark.dynamicAllocation.initialExecutors |
Indique le nombre initial d'exécuteurs à créer, quelle que soit la demande de l'application Spark. | 0 |
spark.dynamicAllocation.minExecutors |
Indique le nombre minimal d'exécuteurs à conserver, quelle que soit la demande de l'application Spark | 0 |
spark.dynamicAllocation.maxExecutors |
Indique le nombre maximal d'exécuteurs à créer, quelle que soit la demande de l'application Spark | 2 |
ae.spark.autoscale.scaleupDemandPercentage |
Indique le pourcentage d'exécuteurs requis par l'application Spark qui doit être rempli par le mécanisme de mise à l'échelle d'application. Par exemple, si à un certain stade une application Spark demande 10 exécuteurs et que la valeur de cette configuration est 50 %, le mécanisme de mise à l'échelle automatique fait passer le nombre d'exécuteurs à 5 exécuteurs. La valeur par défaut de cette configuration est 100 %, ce qui signifie essentiellement que le nombre d'exécuteurs demandés par une application peut être ajouté par le mécanisme de mise à l'échelle automatique. | 100 |
ae.spark.autoscale.scaledownExcessPercentage |
Indique le pourcentage des exécuteurs inactifs détenus par l'application Spark qui doivent être supprimés par le mécanisme de mise à l'échelle automatique d'application. Par exemple, si après avoir terminé une certaine étape dans une application Spark, il existe 20 exécuteurs inactifs conservés par l'application et que la valeur de cette configuration est 25 %, le mécanisme de mise à l'échelle automatique ramène le nombre d'exécuteurs d'application à 4. La valeur par défaut de cette configuration est 100 %, ce qui signifie que le mécanisme de mise à l'échelle automatique peut réduire tous les exécuteurs inactifs. | 100 |
ae.spark.autoscale.frequency |
Fréquence en secondes à laquelle le mécanisme de mise à l'échelle automatique d'application exécute les exécuteurs ou réduit les exécuteurs dans une application. | 10s |
Exemple de contenu d'application de mise à l'échelle automatique montrant les limites inférieure et supérieure du nombre d'exécuteurs que l'application peut augmenter ou diminuer.
{
"application_details": {
"application": "cos://<application-bucket-name>.<cos-reference-name>/my_spark_application.py",
"conf": {
"ae.spark.autoscale.enable": "true",
"spark.dynamicAllocation.initialExecutors": "0",
"spark.dynamicAllocation.minExecutors": "1",
"spark.dynamicAllocation.maxExecutors": "10",
"spark.hadoop.fs.cos.<cos-reference-name>.endpoint": "s3.direct.us-south.cloud-object-storage.appdomain.cloud",
"spark.hadoop.fs.cos.<cos-reference-name>.iam.api.key": "<iam-api-key-of-application-bucket>"
}
}
}
Activation de la mise à l'échelle automatique sur une instance
Par défaut, la mise à l'échelle automatique des applications est désactivée lorsque vous créez une instance du forfait Analytics Engine Standard sans serveur. Si vous souhaitez activer la mise à l'échelle automatique de toutes les applications au niveau de l'instance, vous pouvez définir explicitement "ae.spark.autoscale.enable": "true" en tant que configuration Spark par défaut lorsque vous créez l'instance. Voir Configuration Spark par défaut.