Utilisation de la mise à l'échelle automatique avec une politique personnalisée pour les groupes d'instances - Amazon EMR

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.

Utilisation de la mise à l'échelle automatique avec une politique personnalisée pour les groupes d'instances

Le dimensionnement automatique avec une politique personnalisée dans les versions 4.0 et supérieures d'Amazon EMR vous permet de dimensionner et de dimensionner de manière programmatique les nœuds principaux et les nœuds de tâches en fonction d'une CloudWatch métrique et d'autres paramètres que vous spécifiez dans une politique de dimensionnement. Le dimensionnement automatique avec une stratégie personnalisée est disponible avec la configuration des groupes d'instances. Il ne l'est pas lorsque vous utilisez des parcs d'instances. Pour plus d'informations sur les groupes d'instances et sur les parcs d'instances, consultez Création d'un cluster avec des parcs d'instances ou des groupes d'instances uniformes.

Note

Pour utiliser la fonctionnalité de mise à l'échelle automatique avec une politique personnalisée dans Amazon EMR, vous devez définir true pour le paramètre VisibleToAllUsers lorsque vous créez un cluster. Pour plus d'informations, consultez la section SetVisibleToAllUtilisateurs.

La stratégie de dimensionnement fait partie de la configuration du groupe d'instances. Vous pouvez spécifier une stratégie lors de la configuration initiale d'un groupe d'instances, ou en modifiant un groupe d'instances dans un cluster existant, même quand ce groupe d'instances est actif. Chaque groupe d'instances d'un cluster, à l'exception du groupe d'instances principal, peut avoir sa propre politique de mise à l'échelle, qui consiste en des règles de mise à l'échelle (monter en puissance) et de mise à l'échelle (mise à l'échelle horizontale). Les règles de dimensionnement (augmentation et diminution) peuvent être configurées indépendamment, avec des paramètres différents pour chaque règle.

Vous pouvez configurer des politiques de dimensionnement à l'aide de l'API AWS Management Console AWS CLI, de, ou de l'API Amazon EMR. Lorsque vous utilisez l'API AWS CLI ou Amazon EMR, vous spécifiez la politique de dimensionnement au format JSON. En outre, lorsque vous utilisez l'API AWS CLI ou l'API Amazon EMR, vous pouvez spécifier des métriques personnalisées CloudWatch . Les métriques personnalisées ne sont pas disponibles pour la sélection avec la AWS Management Console. Lorsque vous créez une politique de mise à l'échelle avec la console, une politique par défaut adaptée à de nombreuses applications est préconfigurée pour vous aider à démarrer. Vous pouvez supprimer ou modifier les règles par défaut.

Même si le dimensionnement automatique vous permet d'ajuster la capacité du cluster EMR on-the-fly, vous devez toujours tenir compte des exigences de charge de travail de base et planifier les configurations de vos nœuds et de vos groupes d'instances. Pour plus d'informations, consultez Consignes pour la configuration de cluster.

Note

Pour la plupart des charges de travail, il est conseillé de configurer les règles de dimensionnement (diminution et augmentation) pour optimiser l'utilisation des ressources. La configuration d'une seule de ces deux règles implique le redimensionnement manuel du nombre d'instances après une activité de dimensionnement. En d'autres termes, cela met en place une stratégie « unidirectionnelle » d'augmentation ou de diminution avec une réinitialisation manuelle.

Création du rôle IAM pour la mise à l'échelle automatique

La mise à l'échelle automatique dans Amazon EMR nécessite un rôle IAM avec des autorisations pour ajouter et supprimer des instances lorsque les activités de mise à l'échelle sont déclenchées. Un rôle par défaut configuré avec la stratégie d'approbation et la stratégie de rôle appropriées, EMR_AutoScaling_DefaultRole, est disponible à cette fin. Lorsque vous créez un cluster avec une politique de dimensionnement pour la première fois avec le AWS Management Console, Amazon EMR crée le rôle par défaut et associe la politique gérée par défaut pour les autorisations,. AmazonElasticMapReduceforAutoScalingRole

Lorsque vous créez un cluster doté d'une politique de dimensionnement automatique avec le AWS CLI, vous devez d'abord vous assurer que le rôle IAM par défaut existe ou que vous disposez d'un rôle IAM personnalisé auquel est attachée une politique fournissant les autorisations appropriées. Pour créer le rôle par défaut, vous pouvez exécuter la commande create-default-roles avant de créer un cluster. Vous pouvez alors spécifier l'option --auto-scaling-role EMR_AutoScaling_DefaultRole lorsque vous créez un cluster. Autrement, vous pouvez créer un rôle de dimensionnement automatique personnalisé, puis le spécifier lors de la création d'un cluster, par exemple --auto-scaling-role MyEMRAutoScalingRole. Si vous créez un rôle personnalisé de mise à l'échelle automatique pour Amazon EMR, nous vous recommandons de baser les politiques d'autorisation de votre rôle personnalisé sur la politique gérée. Pour plus d’informations, consultez Configuration des rôles de service IAM pour les autorisations Amazon EMR aux services et ressources AWS ..

Présentation des règles de dimensionnement automatique

Lorsqu'une règle de mise à l'échelle déclenche une activité de mise à l'échelle pour un groupe d'instances, des instances Amazon EC2 sont ajoutées au groupe d'instances conformément à vos règles. Des applications comme Apache Spark, Apache Hive et Presto peuvent utiliser de nouveaux nœuds dès que l'instance Amazon EC2 passe à l'état InService. Vous pouvez également configurer une règle de dimensionnement (diminution) qui met des instances hors service et supprime des nœuds. Pour plus d'informations sur le cycle de vie des instances Amazon EC2 qui sont mises à l'échelle automatiquement, consultez Cycle de vie de l'autoscaling dans le Guide de l'utilisateur Amazon EC2 Auto Scaling.

Vous pouvez configurer la façon dont un cluster met des instances Amazon EC2 hors service. Pour la facturation, vous pouvez choisir de mettre hors service à l'échéance horaire de l'instance Amazon EC2 ou lorsque la tâche est terminée. Ce paramètre s'applique aux opérations de dimensionnement automatique et de redimensionnement manuel. Pour en savoir plus sur cette configuration, consultez Réduction de capacité des clusters.

Les paramètres suivants déterminent le comportement de dimensionnement automatique pour chaque règle d'une stratégie.

Note

Les paramètres répertoriés ici sont basés sur ceux AWS Management Console d'Amazon EMR. Lorsque vous utilisez l'API AWS CLI ou Amazon EMR, des options de configuration avancées supplémentaires sont disponibles. Pour plus d'informations sur les options avancées, consultez SimpleScalingPolicyConfigurationle manuel Amazon EMR API Reference.

  • Nombre minimal et nombre maximal d'instances. La contrainte Nombre maximal d'instances spécifie le nombre maximal d'instances Amazon EC2 qui peut figurer dans le groupe d'instances et s'applique à toutes les règles de mise à l'échelle (monter en puissance) De même, la contrainte Nombre minimal d'instances spécifie le nombre minimal d'instances Amazon EC2 et s'applique à toutes les règles de mise à l'échelle (mise à l'échelle horizontale).

  • Le Nom de la règle qui doit être unique dans la stratégie.

  • L'ajustement de dimensionnement qui détermine le nombre d'instances EC2 à ajouter (pour les règles de dimensionnement d'augmentation) ou à résilier (pour les règles de dimensionnement de diminution).

  • La CloudWatch métrique, qui est surveillée pour détecter une situation d'alarme.

  • Un opérateur de comparaison, qui est utilisé pour comparer la CloudWatch métrique à la valeur du seuil et déterminer une condition de déclenchement.

  • Période d'évaluation, par tranches de cinq minutes, pendant laquelle la CloudWatch métrique doit être dans une condition de déclenchement avant que l'activité de dimensionnement ne soit déclenchée.

  • Un temps de stabilisation qui détermine la durée qui doit s'écouler entre une activité de dimensionnement déclenchée par une règle et le début de l'activité de dimensionnement suivante, quelle que soit la règle qui la déclenche. Lorsqu'un groupe d'instances a terminé une activité de dimensionnement et atteint son état après le dimensionnement, la période de recharge permet aux CloudWatch métriques susceptibles de déclencher les activités de dimensionnement ultérieures de se stabiliser. Pour de plus amples informations, consultez Temps de stabilisation de l'autoscaling dans le Guide de l'utilisateur pour Amazon EC2 Auto Scaling.

    AWS Management Console paramètres des règles de dimensionnement automatique pour Amazon EMR.

Considérations et restrictions

  • Les CloudWatch métriques Amazon sont essentielles au bon fonctionnement du dimensionnement automatique d'Amazon EMR. Nous vous recommandons de suivre de près les CloudWatch métriques Amazon pour vous assurer que les données ne sont pas manquantes. Pour plus d'informations sur la façon dont vous pouvez configurer les CloudWatch alarmes Amazon afin de détecter les métriques manquantes, consultez Utilisation des CloudWatch alarmes Amazon.

  • La surutilisation des volumes EBS peut entraîner des problèmes de mise à l'échelle gérée. Nous vous recommandons de surveiller de près l'utilisation du volume EBS pour vous assurer que le volume EBS est inférieur à 90 % d'utilisation. Consultez Stockage d'instance pour plus d'informations sur la spécification de volumes EBS supplémentaires.

  • Le dimensionnement automatique avec une politique personnalisée dans les versions 5.18 à 5.28 d'Amazon EMR peut rencontrer un échec de dimensionnement dû à l'absence intermittente de données dans les métriques Amazon. CloudWatch Pour une mise à l'échelle automatique améliorée, nous vous recommandons d'utiliser les versions les plus récentes d'Amazon EMR. Si vous avez besoin d'utiliser une version d'Amazon EMR comprise entre 5.18 et 5.28, vous pouvez contacter l'AWS Assistance pour obtenir un correctif.

Utilisation du AWS Management Console pour configurer le dimensionnement automatique

Lorsque vous créez un cluster, vous configurez une politique de mise à l'échelle pour les groupes d'instances à l'aide des options de configuration avancée du cluster. Vous pouvez également créer ou modifier une stratégie de dimensionnement pour un groupe d'instances en service en modifiant les groupes d'instances dans les paramètres Hardware (Matériel) d'un cluster existant.

Note

La nouvelle console Amazon EMR (https://console.aws.amazon.com/emr) utilise la mise à l'échelle gérée au lieu de l'autoscaling. Pour utiliser l'autoscaling, assurez-vous d'être connecté à l'ancienne console à l'adresse https://console.aws.amazon.com/elasticmapreduce.

  1. Accédez à la nouvelle console Amazon EMR et sélectionnez Changer pour l'ancienne console depuis le menu latéral. Pour plus d'informations sur ce qu'implique le passage à l'ancienne console, consultez la rubrique Utilisation de l'ancienne console.

  2. Si vous créez un cluster, dans la console Amazon EMR, sélectionnez Créer un cluster, sélectionnez Accéder aux options avancées, choisissez des options pour Étape 1 : Logiciel et étapes, puis accédez à Étape 2 : Configuration matérielle.

    - ou -

    Si vous modifiez un groupe d'instances dans un cluster en cours d'exécution, sélectionnez votre cluster dans la liste, puis développez la section Hardware (Matériel).

  3. Dans l'option de mise à l'échelle et mise en service du cluster, sélectionnez Activer la mise à l'échelle du cluster. Sélectionnez ensuite Create a custom automatic scaling policy (Créer une stratégie de dimensionnement automatique personnalisée).

    Dans le tableau des stratégies de dimensionnement automatique personnalisées, cliquez sur l'icône représentant un crayon qui apparaît dans la ligne du groupe d'instances que vous souhaitez configurer. L'écran des règles d'autoscaling s'ouvre.

  4. Saisissez le nombre d'Maximum instances (Instances maximales) que le groupe d'instances doit contenir après avoir été augmenté, puis entrez le nombre d'Minimum instances (Instances minimales) que le groupe d'instances doit contenir après avoir été diminué.

  5. Cliquez sur le crayon pour modifier les paramètres de règle, cliquez sur X pour supprimer une règle de la stratégie et cliquez sur Add rule (Ajouter une règle) pour ajouter des règles supplémentaires.

  6. Choisissez les paramètres de règle comme indiqué précédemment dans cette rubrique. Pour obtenir une description des CloudWatch métriques disponibles pour Amazon EMR, consultez les métriques et dimensions Amazon EMR dans le guide de l'utilisateur Amazon. CloudWatch

Utilisation du AWS CLI pour configurer le dimensionnement automatique

Vous pouvez utiliser AWS CLI des commandes pour Amazon EMR afin de configurer le dimensionnement automatique lorsque vous créez un cluster et un groupe d'instances. Vous pouvez utiliser une syntaxe raccourcie, en spécifiant la configuration JSON compatible avec les commandes adéquates, ou vous pouvez indiquer un fichier contenant la configuration JSON. Vous pouvez également appliquer une stratégie de dimensionnement automatique à un groupe d'instances existant et supprimer une stratégie de dimensionnement automatique qui a été précédemment appliquée. En outre, vous pouvez récupérer les détails de configuration d'une stratégie de dimensionnement à partir d'un cluster en cours d'exécution.

Important

Lorsque vous créez un cluster doté d'une politique de mise à l'échelle automatique, vous devez utiliser la commande --auto-scaling-role MyAutoScalingRole pour spécifier le rôle IAM pour la mise à l'échelle automatique. Le rôle par défaut est EMR_AutoScaling_DefaultRole et peut être créé à l'aide de la commande create-default-roles. Le rôle ne peut être ajouté qu'au moment de la création du cluster ; il ne peut pas être ajouté à un cluster existant.

Pour une description détaillée des paramètres disponibles lors de la configuration d'une politique de dimensionnement automatique, consultez le manuel PutAutoScalingPolicyAmazon EMR API Reference.

Création d'un cluster avec une politique de mise à l'échelle automatique appliquée à un groupe d'instances

Vous pouvez spécifier une configuration de dimensionnement automatique au sein de l'option --instance-groups de la commande aws emr create-cluster. L'exemple suivant illustre une commande create-cluster où une stratégie de dimensionnement automatique pour le groupe d'instances principal est fournie en ligne. La commande crée une configuration de dimensionnement équivalente à la politique de scale-out par défaut qui apparaît lorsque vous créez une politique de dimensionnement automatique avec le for AWS Management Console Amazon EMR. Pour des raisons de concision, une stratégie de diminution n'apparaît pas. Nous vous déconseillons de créer une règle d'augmentation sans définir une règle de diminution.

aws emr create-cluster --release-label emr-5.2.0 --service-role EMR_DefaultRole --ec2-attributes InstanceProfile=EMR_EC2_DefaultRole --auto-scaling-role EMR_AutoScaling_DefaultRole --instance-groups Name=MyMasterIG,InstanceGroupType=MASTER,InstanceType=m5.xlarge,InstanceCount=1 'Name=MyCoreIG,InstanceGroupType=CORE,InstanceType=m5.xlarge,InstanceCount=2,AutoScalingPolicy={Constraints={MinCapacity=2,MaxCapacity=10},Rules=[{Name=Default-scale-out,Description=Replicates the default scale-out rule in the console.,Action={SimpleScalingPolicyConfiguration={AdjustmentType=CHANGE_IN_CAPACITY,ScalingAdjustment=1,CoolDown=300}},Trigger={CloudWatchAlarmDefinition={ComparisonOperator=LESS_THAN,EvaluationPeriods=1,MetricName=YARNMemoryAvailablePercentage,Namespace=AWS/ElasticMapReduce,Period=300,Statistic=AVERAGE,Threshold=15,Unit=PERCENT,Dimensions=[{Key=JobFlowId,Value="${emr.clusterId}"}]}}}]}'

La commande suivante illustre comment utiliser la ligne de commande pour fournir la définition de la politique de mise à l'échelle automatique dans le cadre d'un fichier de configuration de groupe d'instances nommé instancegroupconfig.json.

aws emr create-cluster --release-label emr-5.2.0 --service-role EMR_DefaultRole --ec2-attributes InstanceProfile=EMR_EC2_DefaultRole --instance-groups file://your/path/to/instancegroupconfig.json --auto-scaling-role EMR_AutoScaling_DefaultRole

Avec le contenu du fichier de configuration comme suit :

[ { "InstanceCount": 1, "Name": "MyMasterIG", "InstanceGroupType": "MASTER", "InstanceType": "m5.xlarge" }, { "InstanceCount": 2, "Name": "MyCoreIG", "InstanceGroupType": "CORE", "InstanceType": "m5.xlarge", "AutoScalingPolicy": { "Constraints": { "MinCapacity": 2, "MaxCapacity": 10 }, "Rules": [ { "Name": "Default-scale-out", "Description": "Replicates the default scale-out rule in the console for YARN memory.", "Action":{ "SimpleScalingPolicyConfiguration":{ "AdjustmentType": "CHANGE_IN_CAPACITY", "ScalingAdjustment": 1, "CoolDown": 300 } }, "Trigger":{ "CloudWatchAlarmDefinition":{ "ComparisonOperator": "LESS_THAN", "EvaluationPeriods": 1, "MetricName": "YARNMemoryAvailablePercentage", "Namespace": "AWS/ElasticMapReduce", "Period": 300, "Threshold": 15, "Statistic": "AVERAGE", "Unit": "PERCENT", "Dimensions":[ { "Key" : "JobFlowId", "Value" : "${emr.clusterId}" } ] } } } ] } } ]

Ajout d'un groupe d'instances avec une politique de mise à l'échelle automatique à un cluster

Vous pouvez spécifier une configuration de la politique de mise à l'échelle à l'aide de l'option --instance-groups avec la commande add-instance-groups de la même manière que lorsque vous utilisez create-cluster. L'exemple suivant utilise une référence à un fichier JSON, instancegroupconfig.json, avec la configuration du groupe d'instances.

aws emr add-instance-groups --cluster-id j-1EKZ3TYEVF1S2 --instance-groups file://your/path/to/instancegroupconfig.json

Application d'une politique de mise à l'échelle automatique à un groupe d'instances existant ou modification d'une politique appliquée

Utilisez la commande aws emr put-auto-scaling-policy pour appliquer une stratégie de dimensionnement automatique à un groupe d'instances existant. Le groupe d'instances doit faire partie d'un cluster qui utilise le rôle IAM de mise à l'échelle automatique. L'exemple suivant utilise une référence à un fichier JSON, autoscaleconfig.json, qui spécifie la configuration de stratégie de dimensionnement automatique.

aws emr put-auto-scaling-policy --cluster-id j-1EKZ3TYEVF1S2 --instance-group-id ig-3PLUZBA6WLS07 --auto-scaling-policy file://your/path/to/autoscaleconfig.json

Le contenu du fichier autoscaleconfig.json qui définit la même règle d'augmentation comme illustré dans l'exemple précédent, est présenté ci-dessous.

{ "Constraints": { "MaxCapacity": 10, "MinCapacity": 2 }, "Rules": [{ "Action": { "SimpleScalingPolicyConfiguration": { "AdjustmentType": "CHANGE_IN_CAPACITY", "CoolDown": 300, "ScalingAdjustment": 1 } }, "Description": "Replicates the default scale-out rule in the console for YARN memory", "Name": "Default-scale-out", "Trigger": { "CloudWatchAlarmDefinition": { "ComparisonOperator": "LESS_THAN", "Dimensions": [{ "Key": "JobFlowID", "Value": "${emr.clusterID}" }], "EvaluationPeriods": 1, "MetricName": "YARNMemoryAvailablePercentage", "Namespace": "AWS/ElasticMapReduce", "Period": 300, "Statistic": "AVERAGE", "Threshold": 15, "Unit": "PERCENT" } } }] }

Suppression d'une politique de mise à l'échelle automatique d'un groupe d'instances

aws emr remove-auto-scaling-policy --cluster-id j-1EKZ3TYEVF1S2 --instance-group-id ig-3PLUZBA6WLS07

Récupération de la configuration d'une politique de mise à l'échelle automatique

La describe-cluster commande récupère la configuration de la politique dans le InstanceGroup bloc. Par exemple, la commande suivante extrait la configuration pour le cluster avec un ID de cluster de j-1CWOHP4PI30VJ.

aws emr describe-cluster --cluster-id j-1CWOHP4PI30VJ

La commande produit l'exemple de résultat suivant.

{ "Cluster": { "Configurations": [], "Id": "j-1CWOHP4PI30VJ", "NormalizedInstanceHours": 48, "Name": "Auto Scaling Cluster", "ReleaseLabel": "emr-5.2.0", "ServiceRole": "EMR_DefaultRole", "AutoTerminate": false, "TerminationProtected": true, "MasterPublicDnsName": "ec2-54-167-31-38.compute-1.amazonaws.com", "LogUri": "s3n://aws-logs-232939870606-us-east-1/elasticmapreduce/", "Ec2InstanceAttributes": { "Ec2KeyName": "performance", "AdditionalMasterSecurityGroups": [], "AdditionalSlaveSecurityGroups": [], "EmrManagedSlaveSecurityGroup": "sg-09fc9362", "Ec2AvailabilityZone": "us-east-1d", "EmrManagedMasterSecurityGroup": "sg-0bfc9360", "IamInstanceProfile": "EMR_EC2_DefaultRole" }, "Applications": [ { "Name": "Hadoop", "Version": "2.7.3" } ], "InstanceGroups": [ { "AutoScalingPolicy": { "Status": { "State": "ATTACHED", "StateChangeReason": { "Message": "" } }, "Constraints": { "MaxCapacity": 10, "MinCapacity": 2 }, "Rules": [ { "Name": "Default-scale-out", "Trigger": { "CloudWatchAlarmDefinition": { "MetricName": "YARNMemoryAvailablePercentage", "Unit": "PERCENT", "Namespace": "AWS/ElasticMapReduce", "Threshold": 15, "Dimensions": [ { "Key": "JobFlowId", "Value": "j-1CWOHP4PI30VJ" } ], "EvaluationPeriods": 1, "Period": 300, "ComparisonOperator": "LESS_THAN", "Statistic": "AVERAGE" } }, "Description": "", "Action": { "SimpleScalingPolicyConfiguration": { "CoolDown": 300, "AdjustmentType": "CHANGE_IN_CAPACITY", "ScalingAdjustment": 1 } } }, { "Name": "Default-scale-in", "Trigger": { "CloudWatchAlarmDefinition": { "MetricName": "YARNMemoryAvailablePercentage", "Unit": "PERCENT", "Namespace": "AWS/ElasticMapReduce", "Threshold": 75, "Dimensions": [ { "Key": "JobFlowId", "Value": "j-1CWOHP4PI30VJ" } ], "EvaluationPeriods": 1, "Period": 300, "ComparisonOperator": "GREATER_THAN", "Statistic": "AVERAGE" } }, "Description": "", "Action": { "SimpleScalingPolicyConfiguration": { "CoolDown": 300, "AdjustmentType": "CHANGE_IN_CAPACITY", "ScalingAdjustment": -1 } } } ] }, "Configurations": [], "InstanceType": "m5.xlarge", "Market": "ON_DEMAND", "Name": "Core - 2", "ShrinkPolicy": {}, "Status": { "Timeline": { "CreationDateTime": 1479413437.342, "ReadyDateTime": 1479413864.615 }, "State": "RUNNING", "StateChangeReason": { "Message": "" } }, "RunningInstanceCount": 2, "Id": "ig-3M16XBE8C3PH1", "InstanceGroupType": "CORE", "RequestedInstanceCount": 2, "EbsBlockDevices": [] }, { "Configurations": [], "Id": "ig-OP62I28NSE8M", "InstanceGroupType": "MASTER", "InstanceType": "m5.xlarge", "Market": "ON_DEMAND", "Name": "Master - 1", "ShrinkPolicy": {}, "EbsBlockDevices": [], "RequestedInstanceCount": 1, "Status": { "Timeline": { "CreationDateTime": 1479413437.342, "ReadyDateTime": 1479413752.088 }, "State": "RUNNING", "StateChangeReason": { "Message": "" } }, "RunningInstanceCount": 1 } ], "AutoScalingRole": "EMR_AutoScaling_DefaultRole", "Tags": [], "BootstrapActions": [], "Status": { "Timeline": { "CreationDateTime": 1479413437.339, "ReadyDateTime": 1479413863.666 }, "State": "WAITING", "StateChangeReason": { "Message": "Cluster ready after last step completed." } } } }