Tous les produits
Search
Centre de documentation

:Créer une stratégie de mise à l'échelle automatique personnalisée

Dernière mise à jour :Aug 20, 2026

Si vos charges de travail fluctuent et que vous en maîtrisez les schémas, activez la mise à l'échelle automatique en configurant des règles adaptées. E-MapReduce (EMR) ajoute ou supprime automatiquement des nœuds de tâche selon les variations de charge pour garantir l'exécution des tâches et réduire les coûts. Cette rubrique explique comment configurer des stratégies de mise à l'échelle automatique personnalisées.

Prérequis

  • Vous avez créé un cluster DataLake, Dataflow, OLAP, DataServing ou Custom. Pour plus d'informations, consultez Créer un cluster.

  • Vous avez créé un groupe de nœuds de tâche utilisant des instances à paiement à l'utilisation ou préemptibles dans le cluster. Pour plus d'informations, consultez Créer un groupe de nœuds.

Limites

  • Pour limiter les échecs de montée en puissance dus à un stock ECS insuffisant, spécifiez plusieurs types d'instance lors de la création d'un groupe de nœuds. Vous pouvez sélectionner jusqu'à 10 types d'instance ECS en alternative. Le système tente de provisionner les instances en commençant par le premier type de votre liste. Si un type est indisponible, il passe automatiquement au suivant jusqu'à satisfaire la demande. Les types d'instance effectivement achetés peuvent varier selon l'évolution du stock.

  • Seuls les clusters disposant du service YARN prennent en charge les règles de mise à l'échelle basées sur la charge.

Notes d'utilisation

  • Lorsqu'une règle se déclenche, le groupe de nœuds met automatiquement à l'échelle selon la stratégie prédéfinie. Sans règles, aucune mise à l'échelle automatique ne se produit.

  • Le système identifie automatiquement les instances correspondantes aux types sélectionnés et les liste comme candidates. Sélectionnez parmi ces candidates pour activer la mise à l'échelle avec ces types d'instance.

Remarque

Si plusieurs règles de mise à l'échelle se déclenchent simultanément, le système les exécute selon les priorités suivantes :

  • Les règles de montée en puissance (scale-out) sont prioritaires sur les règles de réduction (scale-in).

  • Les règles basées sur le temps et sur la charge s'exécutent dans l'ordre de leur déclenchement.

  • Pour la mise à l'échelle basée sur la charge, les règles sont triées par heure de déclenchement de la métrique.

  • Pour la mise à l'échelle basée sur la charge, les règles fondées sur la même métrique se déclenchent dans l'ordre de leur création.

Procédure

Méthode 1 : Configurer des règles pour un cluster existant

  1. Accédez à la page Auto Scaling.

    1. Connectez-vous à la console EMR on ECS.

    2. Dans la barre de navigation supérieure, sélectionnez une région et resource group selon vos besoins.

    3. Cliquez sur le nom du cluster cible.

    4. Sur la page qui s'affiche, cliquez sur l'onglet Auto Scaling.

  2. Configurez les règles de mise à l'échelle.

    1. Sous l'onglet Configure Auto Scaling, dans la section Configure Auto Scaling Rule, cliquez sur Custom Auto Scaling Rule, sélectionnez Reconfigure, puis cliquez sur Edit dans la colonne Actions pour le groupe de nœuds cible.

    2. Dans le panneau Configure Auto Scaling, configurez les paramètres.

      • Limits on Node Quantity of Current Node Group : Contrôle le nombre de nœuds dans le groupe pour éviter qu'il ne devienne trop important ou trop réduit lors de la mise à l'échelle automatique. Pour modifier cette configuration, cliquez sur Modify Limit.

        • Maximum Number of Instances : Nombre maximal de nœuds dans le groupe de nœuds actuel. Lorsque cette limite est atteinte, le groupe de nœuds cesse de monter en puissance.

        • Minimum Number of Instances : Nombre minimal de nœuds dans le groupe de nœuds actuel. Lorsque cette limite est atteinte, le groupe de nœuds cesse de réduire sa capacité.

      • Trigger Rule : Affiche et permet de configurer les règles de mise à l'échelle pour le groupe de nœuds actuel.

        • Mise à l'échelle basée sur le temps

          Si la charge de calcul de votre cluster présente des pics et des creux prévisibles, définissez une heure fixe quotidiennement, hebdomadairement ou mensuellement pour augmenter le nombre de nœuds de tâche d'une valeur spécifique. Cela ajoute des ressources de calcul lorsque nécessaire, contribuant ainsi à garantir l'exécution des tâches tout en réalisant des économies. Les règles de mise à l'échelle se divisent en règles de montée en puissance et règles de réduction.

          Important

          Pour éviter les conflits et assurer une mise à l'échelle fluide, ne définissez pas les mêmes heures d'exécution pour les règles de montée en puissance et de réduction.

          Cette section utilise une règle de montée en puissance comme exemple.

          Paramètre

          Description

          Scale-out type

          Montée en puissance basée sur le temps.

          Rule Name

          Les noms des règles de mise à l'échelle doivent être uniques au sein d'un cluster.

          Frequency

          • Execute Repeatedly : L'action de mise à l'échelle s'exécute à une heure précise chaque jour, semaine ou mois.

          • Execute Only Once : L'action de mise à l'échelle s'exécute une fois à l'heure spécifiée.

          Execution Time

          L'heure à laquelle la règle est exécutée.

          Rule Expiration Time

          Si vous définissez Frequency sur Execute Repeatedly, vous pouvez définir une heure d'expiration pour la règle. La règle cesse de déclencher des activités de mise à l'échelle après cette heure.

          Retry Time Range

          Une action de mise à l'échelle peut ne pas s'exécuter à l'heure prévue pour diverses raisons. Si vous définissez une plage de temps de nouvelle tentative, le système retente l'action toutes les 30 secondes dans cette plage jusqu'à ce qu'elle réussisse. La valeur peut aller de 0 à 3 600 secondes.

          Par exemple, si l'action A est planifiée mais ne peut pas s'exécuter car une autre action B est en cours ou en période de temporisation, le système retentera l'action A toutes les 30 secondes pendant la plage de temps de nouvelle tentative spécifiée. L'action s'exécute dès que les conditions le permettent.

          Nodes for each scale-out

          Le nombre de nœuds à ajouter lorsque la règle est déclenchée.

          Best-effort Delivery

          Nous vous recommandons d'activer cette fonctionnalité. Une fois la livraison au mieux activée, le système fournit le nombre maximal possible de nœuds pour garantir le bon fonctionnement des activités.

          Par exemple, vous configurez le système pour augmenter la capacité de 100 nœuds tous les jours à 00:00. Si seulement 90 nœuds sont disponibles en stock, le processus échouerait normalement. Avec cette fonctionnalité activée, les 90 nœuds disponibles sont fournis.

        • Mise à l'échelle basée sur la charge

          Remarque

          Cette fonctionnalité est prise en charge uniquement lorsque le service YARN est déployé dans le cluster.

          Si vous ne pouvez pas prédire avec précision les pics et les creux de votre charge de calcul Big Data, mais que vous comprenez bien votre modèle métier, utilisez la mise à l'échelle basée sur la charge. Les règles de mise à l'échelle se divisent en règles de montée en puissance et règles de réduction. Cette section utilise une règle de montée en puissance comme exemple.

          Paramètre

          Description

          Scale-out type

          Montée en puissance basée sur la charge.

          Rule Name

          Les noms des règles de mise à l'échelle doivent être uniques au sein d'un cluster.

          Load Metric-based Trigger Conditions

          Les conditions qui déclenchent la règle de mise à l'échelle basée sur la charge. Sélectionnez une ou plusieurs métriques de charge prédéfinies par le système. Pour sélectionner plusieurs métriques, cliquez sur Add Metric. Les paramètres suivants sont inclus :

          • Métrique de charge : Nom d'une métrique de charge prise en charge par le système. Pour plus d'informations sur la correspondance entre les métriques de mise à l'échelle automatique E-MapReduce et les métriques du service YARN, consultez Correspondance entre les métriques de mise à l'échelle automatique E-MapReduce et les métriques du service YARN.

            Remarque

            Les métriques de charge prises en charge varient selon le type de cluster. Seules les métriques affichées dans la console font foi.

          • Méthode d'agrégation : Méthode (moyenne, maximum ou minimum) utilisée pour évaluer la métrique de charge par rapport à un seuil sur une période statistique. La règle se déclenche si la valeur agrégée atteint le seuil.

          Multi-metric Relationship

          Vous pouvez sélectionner All Metrics Meet the Conditions ou Any Metric Meets the Condition.

          Statistical Period

          Fenêtre temporelle pour la collecte et l'agrégation des métriques. Une période plus courte rend la règle plus sensible aux variations de charge. Sélectionnez une période statistique raisonnable en fonction de vos besoins métier.

          Condition Repetition Threshold

          Nombre de périodes statistiques consécutives durant lesquelles la métrique doit dépasser le seuil avant que la règle ne se déclenche. Cela évite une mise à l'échelle due à des pics brefs.

          Nodes for each scale-out

          Le nombre de nœuds à ajouter lorsque la règle est déclenchée.

          Best-effort Delivery

          Si vous activez cette fonctionnalité, le système fournit le nombre maximal possible de nœuds. Évaluez s'il convient d'activer cette fonctionnalité pour la mise à l'échelle basée sur la charge. Contrairement à la mise à l'échelle basée sur le temps où la capacité requise est connue, la mise à l'échelle basée sur la charge réagit aux métriques, et une satisfaction partielle pourrait ne pas être souhaitable.

          Cooldown Time

          Intervalle entre le début d'une activité de mise à l'échelle automatique et le moment où une autre peut commencer. Pendant cette période, tous les déclencheurs de mise à l'échelle sont ignorés. Une fois la temporisation terminée, le système ne répondra qu'aux nouveaux déclencheurs qui remplissent les conditions de mise à l'échelle.

          Cette période de temporisation permet à la charge du système de se stabiliser après un événement de mise à l'échelle avant qu'un autre ne soit initié.

          Effective Time Period

          Paramètre facultatif qui spécifie la plage horaire durant laquelle une règle de mise à l'échelle basée sur la charge est active. Par défaut, la règle est active 24 h/24 et 7 j/7. Si vous définissez une plage horaire, les activités de mise à l'échelle ne se déclenchent que dans cette plage.

    3. Une fois la configuration terminée, cliquez sur Save and Apply.

      Lorsque les conditions sont remplies, des activités de mise à l'échelle automatique se déclenchent pour le groupe de nœuds.

Méthode 2 : Configurer des règles lors de la création du cluster

  1. Connectez-vous à la console EMR on ECS.

  2. Dans la barre de navigation supérieure, sélectionnez une région et resource group selon vos besoins.

  3. Cliquez sur CREATE_CLUSTER. Pour plus d'informations sur les paramètres, consultez Créer un cluster.

    Remarque

    Vous devez ajouter un groupe de nœuds de tâche à paiement à l'utilisation au cluster avant de pouvoir configurer les règles correspondantes.

  4. Configurez Cluster Scaling.

    1. Sélectionnez Custom Auto Scaling Rule et cliquez sur Edit dans la colonne Actions du groupe de nœuds cible.

    2. Dans le panneau Configure Auto Scaling, configurez les paramètres. Pour plus d'informations, consultez Configurer des règles de mise à l'échelle.

    3. Une fois la configuration terminée, cliquez sur Save and Apply.

  5. Confirmez la commande et créez le cluster.

    Une fois le cluster créé, des activités de mise à l'échelle se déclenchent pour le groupe de nœuds lorsque les conditions de la règle sont remplies.

Méthode 3 : Configurer des règles avec un SDK

Lors de la création d'un cluster ou d'un groupe de nœuds, configurez des règles de mise à l'échelle personnalisées pour le groupe de nœuds afin d'automatiser la création et la gestion des nœuds. Pour plus d'informations, consultez Créer un cluster et Créer un groupe de nœuds. Vous pouvez également configurer des règles de mise à l'échelle personnalisées pour un groupe de nœuds existant. Pour plus d'informations, consultez Créer des stratégies de mise à l'échelle automatique personnalisées.

Le code Java suivant fournit un exemple de configuration d'une règle de montée en puissance basée sur la charge.

Remarque

Nous vous recommandons d'utiliser la méthode STS, plus sécurisée, pour initialiser le client. Pour plus d'informations sur les méthodes d'authentification, consultez Gérer les identifiants d'accès.

// This file is auto-generated, don't edit it. Thanks.
package com.aliyun.sample;

import com.aliyun.tea.*;

public class Sample {

    /**
     * <b>description</b> :
     * <p>Use an AccessKey pair to initialize the client.</p>
     * @return Client
     * 
     * @throws Exception
     */
    public static com.aliyun.emr20210320.Client createClient() throws Exception {
        // Leaking source code may cause the AccessKey pair to be leaked, posing a threat to the security of all your resources. The following code is for reference only.
        // We recommend that you use the more secure STS method for authentication.
        com.aliyun.teaopenapi.models.Config config = new com.aliyun.teaopenapi.models.Config()
                // Required. Make sure that the ALIBABA_CLOUD_ACCESS_KEY_ID environment variable is set.
                .setAccessKeyId(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"))
                // Required. Make sure that the ALIBABA_CLOUD_ACCESS_KEY_SECRET environment variable is set.
                .setAccessKeySecret(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"));
        // For the endpoint, see https://api.alibabacloud.com/product/Emr.
        config.endpoint = "emr.eu-central-1.aliyuncs.com";
        return new com.aliyun.emr20210320.Client(config);
    }

    public static void main(String[] args_) throws Exception {
        java.util.List<String> args = java.util.Arrays.asList(args_);
        com.aliyun.emr20210320.Client client = Sample.createClient();
        com.aliyun.emr20210320.models.ScalingConstraints scalingConstraints = new com.aliyun.emr20210320.models.ScalingConstraints()
                .setMaxCapacity(10)
                .setMinCapacity(0);
        com.aliyun.emr20210320.models.TriggerCondition scalingRule0MetricsTriggerTriggerCondition0 = new com.aliyun.emr20210320.models.TriggerCondition()
                .setMetricName("yarn_resourcemanager_queue_AvailableVCoresPercentage")
                .setStatistics("AVG")
                .setComparisonOperator("LE")
                .setThreshold(15D);
        com.aliyun.emr20210320.models.TriggerCondition scalingRule0MetricsTriggerTriggerCondition1 = new com.aliyun.emr20210320.models.TriggerCondition()
                .setMetricName("yarn_resourcemanager_queue_AvailableMBPercentage")
                .setStatistics("AVG")
                .setComparisonOperator("LE")
                .setThreshold(15D);
        com.aliyun.emr20210320.models.MetricsTrigger scalingRule0MetricsTrigger = new com.aliyun.emr20210320.models.MetricsTrigger()
                .setTimeWindow(300)
                .setEvaluationCount(1)
                .setCoolDownInterval(300)
                .setConditionLogicOperator("Or")
                .setConditions(java.util.Arrays.asList(
                    scalingRule0MetricsTriggerTriggerCondition0,
                    scalingRule0MetricsTriggerTriggerCondition1
                ));
        com.aliyun.emr20210320.models.ScalingRule scalingRule0 = new com.aliyun.emr20210320.models.ScalingRule()
                .setRuleName("default")
                .setTriggerType("METRICS_TRIGGER")
                .setActivityType("SCALE_OUT")
                .setAdjustmentValue(1)
                .setMetricsTrigger(scalingRule0MetricsTrigger);
        com.aliyun.emr20210320.models.PutAutoScalingPolicyRequest putAutoScalingPolicyRequest = new com.aliyun.emr20210320.models.PutAutoScalingPolicyRequest()
                .setRegionId("cn-hangzhou")
                .setClusterId("c-xxxx")
                .setNodeGroupId("ng-xxx")
                .setScalingRules(java.util.Arrays.asList(
                    scalingRule0
                ))
                .setConstraints(scalingConstraints);
        com.aliyun.teautil.models.RuntimeOptions runtime = new com.aliyun.teautil.models.RuntimeOptions();
        try {
            // Print the API return values on your own.
            client.putAutoScalingPolicyWithOptions(putAutoScalingPolicyRequest, runtime);
        } catch (TeaException error) {
            // The following code is for demonstration purposes only. We recommend that you handle exceptions with caution and do not ignore them in your project.
            // Error message
            System.out.println(error.getMessage());
            // Diagnosis address
            System.out.println(error.getData().get("Recommend"));
            com.aliyun.teautil.Common.assertAsString(error.message);
        } catch (Exception exception) {
            TeaException error = new TeaException(exception.getMessage(), exception);
            // The following code is for demonstration purposes only. We recommend that you handle exceptions with caution and do not ignore them in your project.
            // Error message
            System.out.println(error.getMessage());
            // Diagnosis address
            System.out.println(error.getData().get("Recommend"));
            com.aliyun.teautil.Common.assertAsString(error.message);
        }        
    }
}

Correspondance entre les métriques de mise à l'échelle automatique EMR et YARN

Remarque
  • Pour les métriques de mise à l'échelle automatique liées aux files d'attente, spécifiez le paramètre queue_name. La valeur par défaut est root. Les files d'attente personnalisées sont prises en charge.

  • Pour les métriques de mise à l'échelle automatique liées aux partitions, vous devez spécifier le paramètre partition_name.

Métrique EMR

Service

Description

yarn_resourcemanager_queue_AvailableVCores

YARN

Nombre de cœurs de CPU virtuels disponibles dans la file d'attente spécifiée.

yarn_resourcemanager_queue_PendingVCores

YARN

Nombre de cœurs de CPU virtuels en attente d'allocation dans la file d'attente spécifiée.

yarn_resourcemanager_queue_AllocatedVCores

YARN

Nombre de cœurs de CPU virtuels alloués dans la file d'attente spécifiée.

yarn_resourcemanager_queue_ReservedVCores

YARN

Nombre de cœurs de CPU virtuels réservés dans la file d'attente spécifiée.

yarn_resourcemanager_queue_AvailableMB

YARN

Quantité de mémoire disponible dans la file d'attente spécifiée.

yarn_resourcemanager_queue_PendingMB

YARN

Quantité de mémoire en attente d'allocation dans la file d'attente spécifiée.

yarn_resourcemanager_queue_AllocatedMB

YARN

Quantité de mémoire allouée dans la file d'attente spécifiée.

yarn_resourcemanager_queue_ReservedMB

YARN

Quantité de mémoire réservée dans la file d'attente spécifiée.

yarn_resourcemanager_queue_AppsRunning

YARN

Nombre d'applications en cours d'exécution dans la file d'attente spécifiée.

yarn_resourcemanager_queue_AppsPending

YARN

Nombre d'applications en attente dans la file d'attente spécifiée.

yarn_resourcemanager_queue_AppsKilled

YARN

Nombre d'applications arrêtées dans la file d'attente spécifiée.

yarn_resourcemanager_queue_AppsFailed

YARN

Nombre d'applications ayant échoué dans la file d'attente spécifiée.

yarn_resourcemanager_queue_AppsCompleted

YARN

Nombre d'applications terminées dans la file d'attente spécifiée.

yarn_resourcemanager_queue_AppsSubmitted

YARN

Nombre d'applications soumises dans la file d'attente spécifiée.

yarn_resourcemanager_queue_AllocatedContainers

YARN

Nombre de conteneurs alloués dans la file d'attente spécifiée.

yarn_resourcemanager_queue_PendingContainers

YARN

Nombre de conteneurs en attente d'allocation dans la file d'attente spécifiée.

yarn_resourcemanager_queue_ReservedContainers

YARN

Nombre de conteneurs réservés dans la file d'attente spécifiée.

yarn_resourcemanager_queue_AvailableMBPercentage

YARN

Pourcentage de ressources mémoire disponibles dans la file d'attente spécifiée. MemoryAvailablePercentage = AvailableMemory / TotalMemory.

Remarque

Cette métrique est prise en charge dans les versions EMR-3.43.0 et ultérieures, ainsi que EMR-5.9.0 et ultérieures.

yarn_resourcemanager_queue_PendingContainersRatio

YARN

Ratio du nombre de conteneurs en attente par rapport au nombre de conteneurs alloués dans la file d'attente spécifiée. ContainerPendingRatio = PendingContainers / AllocatedContainers.

Remarque

Cette métrique est prise en charge dans les versions EMR-3.43.0 et ultérieures, ainsi que EMR-5.9.0 et ultérieures.

yarn_resourcemanager_queue_AvailableVCoresPercentage

YARN

Pourcentage de cœurs de CPU virtuels disponibles dans la file d'attente spécifiée. AvailableVCoresPercentage = AvailableVCores / (ReservedVCores + AvailableVCores + AllocatedVCores) * 100

Remarque

Cette métrique est prise en charge dans les versions EMR-3.43.0 et ultérieures, ainsi que EMR-5.9.0 et ultérieures.

yarn_cluster_numContainersByPartition

YARN

Nombre de conteneurs dans la partition spécifiée. Le paramètre partition_name spécifie le nom de la partition.

Remarque

Cette métrique est prise en charge dans les versions EMR-3.44.0 et ultérieures, ainsi que EMR-5.10.0 et ultérieures.

yarn_cluster_usedMemoryMBByPartition

YARN

Utilisation de la mémoire de la partition spécifiée. Le paramètre partition_name spécifie le nom de la partition.

Remarque

Cette métrique est prise en charge dans les versions EMR-3.44.0 et ultérieures, ainsi que EMR-5.10.0 et ultérieures.

yarn_cluster_availMemoryMBByPartition

YARN

Mémoire disponible de la partition spécifiée. Le paramètre partition_name spécifie le nom de la partition.

Remarque

Cette métrique est prise en charge dans les versions EMR-3.44.0 et ultérieures, ainsi que EMR-5.10.0 et ultérieures.

yarn_cluster_usedVirtualCoresByPartition

YARN

Nombre de cœurs de CPU virtuels utilisés dans la partition spécifiée. Le paramètre partition_name spécifie le nom de la partition.

Remarque

Cette métrique est prise en charge dans les versions EMR-3.44.0 et ultérieures, ainsi que EMR-5.10.0 et ultérieures.

yarn_cluster_availableVirtualCoresByPartition

YARN

Nombre de cœurs de CPU virtuels disponibles dans la partition spécifiée. Le paramètre partition_name spécifie le nom de la partition.

Remarque

Cette métrique est prise en charge dans les versions EMR-3.44.0 et ultérieures, ainsi que EMR-5.10.0 et ultérieures.

FAQ

Pourquoi les opérations de montée en puissance des clusters EMR échouent-elles ? Comment améliorer le taux de réussite ?

Causes profondes

  1. Inventaire insuffisant de ressources ECS : Une opération de montée en puissance peut échouer si le nombre demandé d'instances ECS d'un type spécifique dépasse l'inventaire disponible dans la zone de disponibilité actuelle. Les ressources ECS sous-jacentes sont dynamiques et peuvent connaître des pénuries temporaires en raison d'une forte demande.

  2. Limitation à un seul type d'instance : Si votre configuration de mise à l'échelle automatique ne spécifie qu'un seul type d'instance ECS et que ce type est en pénurie, le processus de montée en puissance échouera.

Solutions

  • Nous vous recommandons d'activer la livraison au mieux en activant l'option Best-effort Delivery lors de la configuration d'une règle de mise à l'échelle. Cela garantit que, même si certaines ressources sont indisponibles, le système provisionne autant de ressources que possible au lieu d'abandonner complètement la demande de montée en puissance.

  • Configurez plusieurs types d'instance : Pour augmenter le taux de réussite, nous vous recommandons de configurer plusieurs types d'instance ECS pour le groupe de nœuds de tâche. Pour plus d'informations, consultez Créer un groupe de nœuds. Lors d'une montée en puissance, le système tente de provisionner une instance du premier type de votre liste. S'il est indisponible, le système essaie automatiquement le type suivant, et continue jusqu'à ce que la demande soit satisfaite.

Ces mesures peuvent considérablement améliorer le taux de réussite des montées en puissance de votre cluster EMR.