Cette rubrique explique comment définir et afficher les priorités des tâches dans un groupe de ressources de tâches pour AnalyticDB for MySQL.
Prérequis
Un cluster Enterprise Edition, Basic Edition ou Data Lakehouse Edition AnalyticDB for MySQL est créé.
-
La version du noyau de votre cluster doit être la 3.1.6.3 ou une version ultérieure.
RemarquePour afficher et mettre à jour la version mineure, accédez à la section Configuration Information sur la page Cluster Information de la console AnalyticDB for MySQL.
Vous devez créer et sélectionner un groupe de ressources de tâches lors de la soumission des tâches.
Limites
Vous ne pouvez pas modifier la priorité d'une tâche une fois celle-ci soumise. Cette règle s'applique aux tâches en attente comme aux tâches en cours d'exécution.
Présentation
La priorité d'une tâche détermine l'ordre d'allocation des ressources aux tâches en file d'attente. Lorsque plusieurs tâches s'exécutent simultanément au sein d'un groupe de ressources de tâches, les ressources requises peuvent dépasser les ressources disponibles du groupe. AnalyticDB for MySQL prend en charge la mise en file d'attente des tâches : les nouvelles tâches sont placées en attente plutôt que d'échouer.
Dans certains scénarios métier, l'ordre d'exécution des tâches et de génération des résultats est critique. Par exemple, si la génération de métriques clés dépend du moment de production d'un résultat intermédiaire en amont, vous devez attribuer une priorité élevée à la tâche de traitement en amont afin de garantir qu'elle dispose de ressources suffisantes. AnalyticDB for MySQL propose des files d'attente prioritaires au sein des groupes de ressources de tâches. Vous pouvez définir une priorité pour placer les tâches dans différentes files d'attente, notamment LOWEST, LOW, NORMAL et HIGH. Les tâches dotées d'une priorité plus élevée sont exécutées en premier.
Définir la priorité d'une tâche
Les valeurs valides pour la priorité d'une tâche sont HIGH, NORMAL, LOW et LOWEST. Si vous ne spécifiez aucune priorité, la valeur par défaut est NORMAL.
Par défaut, les requêtes ETL (extract, transform, load) et les requêtes SELECT standard ont une priorité NORMAL.
La méthode de définition de la priorité varie selon le type de tâche.
XIHE BSP
Utilisez un hint : /*+ query_priority= <priority_value>*/
Exemple : définissez la priorité de la tâche XIHE BSP sur HIGH pour la placer dans la file d'attente HIGH.
/*+ query_priority=HIGH*/ SELECT * FROM test_table;
Spark SQL
Utilisez une instruction SET : SET spark.adb.priority = <priority_value>
Exemple : définissez la priorité de la tâche Spark SQL sur LOW pour la placer dans la file d'attente LOW.
SET spark.adb.priority = LOW;
SELECT * FROM test_table;
Spark batch
Configurez le paramètre conf : "conf": { "spark.adb.priority": "<priority_value>"}
Exemple : définissez la priorité de la tâche Spark batch sur HIGH pour la placer dans la file d'attente HIGH.
{
"comments": [
"-- Here is just an example of SparkPi. Modify the content and run your spark program."
],
"args": [
"1000"
],
"file": "local:///tmp/spark-examples.jar",
"name": "SparkPi",
"className": "org.apache.spark.examples.SparkPi",
"conf": {
"spark.driver.resourceSpec": "medium",
"spark.executor.instances": 2,
"spark.executor.resourceSpec": "medium",
"spark.adb.priority": "HIGH"
}
}
Afficher la priorité d'une tâche
XIHE BSP et Spark SQL
Connectez-vous à la console AnalyticDB for MySQL et accédez à l'onglet Execution Records de la page Job Development > SQL Development pour afficher les priorités des tâches.
Spark batch
Connectez-vous à la console AnalyticDB for MySQL et accédez à l'onglet Applications de la page Job Development > Spark JAR Development pour afficher les priorités des tâches.