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.
Reconfigurer un groupe d'instances dans un cluster en cours d'exécution
Avec Amazon EMR version 5.21.0 et ultérieure, vous pouvez reconfigurer les applications de cluster et spécifier des classifications de configuration supplémentaires pour chaque groupe d'instances dans un cluster en cours d'exécution. Pour ce faire, vous pouvez utiliser la console Amazon EMR, le AWS Command Line Interface (AWS CLI) ou le AWS SDK.
Lorsque vous mettez à jour la configuration d'une application pour un groupe d'instances dans la nouvelle console Amazon EMR, la console tente de fusionner la nouvelle configuration avec la configuration existante pour créer une nouvelle configuration active. Dans le cas inhabituel où Amazon EMR ne parvient pas à fusionner la configuration, la console vous avertit.
Après avoir soumis une demande de reconfiguration pour un groupe d'instances, Amazon EMR attribue un numéro de version à la nouvelle spécification de configuration. Vous pouvez suivre le numéro de version d'une configuration ou l'état d'un groupe d'instances en consultant les CloudWatch événements. Pour plus d'informations, consultez la section Surveiller CloudWatch les événements.
Note
Vous pouvez uniquement remplacer, et non supprimer, les configurations de cluster spécifiées lors de la création du cluster. S'il existe des différences entre la configuration existante et le fichier que vous fournissez, Amazon EMR rétablit les configurations modifiées manuellement, telles que les configurations que vous avez modifiées lors de la connexion à votre cluster via SSH, aux valeurs par défaut du cluster pour le groupe d'instances spécifié.
Considérations à prendre en compte lors de la reconfiguration d'un groupe d'instances
- Actions de reconfiguration
-
Lorsque vous soumettez une demande de reconfiguration à l'aide de la console Amazon EMR, AWS Command Line Interface du AWS CLI() ou du SDK, Amazon EMR vérifie AWS le fichier de configuration existant sur le cluster. S'il existe des différences entre la configuration existante et le fichier que vous fournissez, Amazon EMR lance des actions de reconfiguration, redémarre certaines applications et réinitialise toutes les configurations modifiées manuellement, telles que les configurations que vous avez modifiées lorsque vous êtes connecté à votre cluster via SSH, aux valeurs par défaut du cluster pour le groupe d'instances spécifié.
Note
Amazon EMR exécute certaines actions par défaut lors de chaque reconfiguration de groupe d'instances. Ces actions par défaut peuvent entrer en conflit avec les personnalisations de cluster que vous avez effectuées et entraîner des échecs de reconfiguration. Pour plus d'informations sur le dépannage des échecs de reconfiguration, consultez Résoudre les problèmes de reconfiguration des groupes d'instances.
Amazon EMR lance également des actions de reconfiguration pour les classifications de configuration que vous spécifiez dans votre demande. Pour obtenir la liste complète de ces actions, consultez la section Classifications de configuration correspondant à la version d'Amazon EMR que vous utilisez. Par exemple, Classifications de configuration 6.2.0.
Note
Le guide de mise à jour d'Amazon EMR répertorie uniquement les actions de reconfiguration à partir des versions 5.32.0 et 6.2.0 d'Amazon EMR.
- Interruption du service
-
Amazon EMR suit un processus continu pour reconfigurer les instances dans les groupes d'instances Task et Core. Seules 10 % des instances d’un groupe d'instances peuvent être modifiées et redémarrées à un moment donné. Ce processus est plus long à s’exécuter, mais il permet de réduire le risque de défaillance potentielle des applications dans un cluster en cours d'exécution.
Pour exécuter des tâches YARN lors d'un redémarrage de YARN, vous pouvez soit créer un cluster Amazon EMR avec plusieurs nœuds primaires, soit définir
yarn.resourcemanager.recovery.enabled
surtrue
dans votre classification de configurationyarn-site
. Pour plus d'informations sur l'utilisation de plusieurs nœuds maîtres, consultez High Availability YARN ResourceManager. - Validation des applications
-
Amazon EMR vérifie que chaque application du cluster est en cours d'exécution après le redémarrage de la reconfiguration. Si une application n'est pas disponible, l'opération de reconfiguration globale échoue. Si une opération de reconfiguration échoue, Amazon EMR inverse les paramètres de configuration pour revenir à la version de travail précédente.
Note
Pour éviter tout échec de reconfiguration, nous vous recommandons de n'installer sur votre cluster que les applications que vous comptez utiliser. Nous vous recommandons également de vous assurer que toutes les applications de cluster fonctionnent correctement avant de soumettre une demande de reconfiguration.
- Types de reconfiguration
-
Vous pouvez reconfigurer un groupe d'instances de deux manières suivantes :
-
Overwrite. Méthode de reconfiguration par défaut et la seule disponible dans les versions Amazon EMR antérieures aux versions 5.35.0 et 6.6.0. Cette méthode de reconfiguration remplace sans distinction tous les fichiers du cluster par le nouvel ensemble de configuration soumis. La méthode efface toutes les modifications apportées aux fichiers de configuration en dehors de l'API de reconfiguration.
-
Fusionner. Méthode de reconfiguration prise en charge pour les versions 5.35.0 et 6.6.0 d'Amazon EMR et versions ultérieures, à l'exception de la console Amazon EMR, où aucune version ne la prend en charge. Cette méthode de reconfiguration fusionne les configurations récemment soumises avec les configurations qui existent déjà sur le cluster. Cette option ajoute ou modifie uniquement les nouvelles configurations que vous soumettez. Il préserve les configurations existantes.
Note
Amazon EMR continue de remplacer certaines configurations Hadoop essentielles dont il a besoin pour garantir le bon fonctionnement du service.
-
Limites
Lorsque vous reconfigurez un groupe d'instances dans un cluster en cours d'exécution, tenez compte des limitations suivantes :
-
Les applications autres que Yarn peuvent échouer au redémarrage ou provoquer des problèmes de cluster, en particulier si les applications ne sont pas correctement configurées. Les clusters approchant le maximum d'utilisation de la mémoire et du processeur peuvent rencontrer des problèmes après le redémarrage. Cela est particulièrement vrai pour le groupe d'instances principal.
-
Vous ne pouvez pas envoyer de demande de reconfiguration lorsqu'un groupe d'instances est redimensionné. Si une reconfiguration est initiée pendant le redimensionnement d’un groupe d’instances, la reconfiguration ne peut pas démarrer tant que le redimensionnement du groupe d'instances n’est pas terminé, et vice versa.
-
Après avoir reconfiguré un groupe d'instances, Amazon EMR redémarre les applications afin de permettre la prise en compte des nouvelles configurations. Des échecs de tâches ou d'autres comportements inattendus des applications peuvent se produire si les applications sont utilisées durant la reconfiguration.
-
Si une reconfiguration échoue pour un groupe d'instances, Amazon EMR réinitialise les paramètres de configuration vers la précédente version fonctionnelle. Si le processus de réinitialisation échoue, vous devez soumettre une nouvelle demande
ModifyInstanceGroup
pour récupérer le groupe d'instances à partir de l'étatSUSPENDED
. -
Les demandes de reconfiguration pour les classifications de configuration Phoenix ne sont prises en charge que dans Amazon EMR version 5.23.0 et ultérieure, et ne sont pas prises en charge dans Amazon EMR version 5.21.0 ou 5.22.0.
-
Les demandes de reconfiguration pour les classifications de HBase configuration ne sont prises en charge que dans les versions 5.30.0 et ultérieures d'Amazon EMR, et non dans les versions 5.23.0 à 5.29.0 d'Amazon EMR.
-
Amazon EMR prend en charge les demandes de reconfiguration d'applications sur un cluster Amazon EMR comportant plusieurs nœuds primaires uniquement dans les versions 5.27.0 et ultérieures d'Amazon EMR.
-
La reconfiguration de la classification
hdfs-encryption-zones
ou de l'une des classifications de configuration Hadoop KMS n'est pas prise en charge sur un cluster Amazon EMR comportant plusieurs nœuds primaires. -
Amazon EMR ne prend actuellement pas en charge certaines demandes de reconfiguration du planificateur de capacité qui nécessitent le redémarrage du YARN. ResourceManager Par exemple, vous ne pouvez pas supprimer complètement une file d'attente.
Reconfigurer un groupe d'instances dans la console
Note
La console Amazon EMR ne prend pas en charge les reconfigurations de type Merge.
-
Ouvrez la console Amazon EMR à l'adresse /emr https://console.aws.amazon.com
-
Dans la liste des clusters sous Nom, sélectionnez le cluster actif que vous souhaitez reconfigurer.
-
Ouvrez la page des détails du cluster et accédez à l'onglet Configurations.
-
Dans la liste déroulante Filter (Filtre), sélectionnez le groupe d'instances que vous souhaitez reconfigurer.
-
Dans le menu déroulant Reconfigurer, choisissez Modifier dans la table ou Modifier dans le fichier JSON.
-
Modifier dans la table – Dans la table de classification de configuration, modifiez la propriété et la valeur des configurations existantes ou choisissez Ajouter une configuration pour fournir des classifications de configuration supplémentaires.
-
Modification dans un fichier JSON – Saisissez la configuration directement dans JSON, ou utilisez une syntaxe sténographique (démontrée dans le texte ombré). Sinon, fournissez un URI Amazon S3 pour un fichier avec un objet JSON
Configurations
.
Note
La colonne Source de la table des classifications de configuration indique si la configuration est fournie lorsque vous créez un cluster ou lorsque vous spécifiez des configurations supplémentaires pour ce groupe d'instances. Vous pouvez modifier les configurations d’un groupe d'instances à partir de ces deux sources. Vous ne pouvez pas supprimer les configurations de cluster initiales, mais vous pouvez les remplacer pour un groupe d'instances.
Vous pouvez également ajouter ou modifier les classifications de configuration imbriquées directement dans la table. Par exemple, pour fournir une sous-classification
export
supplémentaire dehadoop-env
, ajoutez une classification de configurationhadoop.export
dans la table. Ensuite, indiquez une propriété et une valeur spécifiques pour cette classification. -
-
(Facultatif) Sélectionnez Apply this configuration to all active instance groups (Appliquer cette configuration à tous les groupes d'instances actifs).
-
Enregistrez les Modifications.
Reconfigurer un groupe d'instances à l'aide de la CLI
Utilisez la commande modify-instance-groups pour spécifier une nouvelle configuration pour un groupe d'instances dans un cluster en cours d'exécution.
Note
Dans les exemples suivants, remplacez <j-2AL4XXXXXX5T9>
par votre ID de cluster et remplacez <ig-1xxxxxxx9>
par votre ID de groupe d'instances.
Exemple – Remplacer une configuration pour un groupe d'instances
L'exemple suivant fait référence à un fichier JSON de configuration appelé instanceGroups.json
pour modifier la propriété du vérificateur de santé du NodeManager disque YARN pour un groupe d'instances.
-
Préparez votre classification de configuration et enregistrez-la comme
instanceGroups.json
dans le répertoire où vous allez exécuter la commande.[ { "InstanceGroupId":"
<ig-1xxxxxxx9>
", "Configurations":[ { "Classification":"yarn-site", "Properties":{ "yarn.nodemanager.disk-health-checker.enable":"true", "yarn.nodemanager.disk-health-checker.max-disk-utilization-per-disk-percentage":"100.0" }, "Configurations":[] } ] } ] -
Exécutez la commande suivante.
aws emr modify-instance-groups --cluster-id
<j-2AL4XXXXXX5T9>
\ --instance-groups file://instanceGroups.json
Exemple – Ajoute une configuration à un groupe d'instances
Si vous voulez ajouter une configuration à un groupe d'instances, vous devez inclure toutes les configurations précédemment spécifiées pour ce groupe d'instances dans votre nouvelle demande ModifyInstanceGroup
. Dans le cas contraire, les configurations précédemment spécifiées sont supprimées.
L'exemple suivant ajoute une propriété pour le vérificateur de mémoire NodeManager virtuelle YARN. La configuration inclut également les valeurs précédemment spécifiées pour le vérificateur de santé du NodeManager disque YARN afin que les valeurs ne soient pas remplacées.
-
Préparez le contenu suivant dans
instanceGroups.json
et enregistrez-le dans le même répertoire que celui où vous exécuterez la commande.[ { "InstanceGroupId":"
<ig-1xxxxxxx9>
", "Configurations":[ { "Classification":"yarn-site", "Properties":{ "yarn.nodemanager.disk-health-checker.enable":"true", "yarn.nodemanager.disk-health-checker.max-disk-utilization-per-disk-percentage":"100.0", "yarn.nodemanager.vmem-check-enabled":"true", "yarn.nodemanager.vmem-pmem-ratio":"3.0" }, "Configurations":[] } ] } ] -
Exécutez la commande suivante.
aws emr modify-instance-groups --cluster-id
<j-2AL4XXXXXX5T9>
\ --instance-groups file://instanceGroups.json
Exemple – Ajoutez une configuration à un groupe d'instances avec une reconfiguration de type Merge
Lorsque vous souhaitez utiliser la méthode de reconfiguration Overwrite par défaut pour ajouter une configuration, vous devez inclure toutes les configurations précédemment spécifiées pour ce groupe d'instances dans votre nouvelle demande ModifyInstanceGroup
. Dans le cas contraire, Overwrite supprime les configurations que vous avez spécifiées précédemment. Vous n'avez pas besoin de le faire avec la reconfiguration de Merge. Vous devez plutôt vous assurer que votre demande inclut uniquement les nouvelles configurations.
L'exemple suivant ajoute une propriété pour le vérificateur de mémoire NodeManager virtuelle YARN. Comme il s'agit d'une reconfiguration de type Merge, elle ne remplace pas les valeurs précédemment spécifiées pour le vérificateur de santé du NodeManager disque YARN.
-
Préparez le contenu suivant dans
instanceGroups.json
et enregistrez-le dans le même répertoire que celui où vous exécuterez la commande.[ {"InstanceGroupId":"
<ig-1xxxxxxx9>
", "ReconfigurationType" :"MERGE", "Configurations":[ {"Classification":"yarn-site", "Properties":{ "yarn.nodemanager.vmem-check-enabled":"true", "yarn.nodemanager.vmem-pmem-ratio":"3.0" }, "Configurations":[] } ] } ] -
Exécutez la commande suivante.
aws emr modify-instance-groups --cluster-id
<j-2AL4XXXXXX5T9>
\ --instance-groups file://instanceGroups.json
Exemple – Supprimer une configuration pour un groupe d'instances
Pour supprimer une configuration pour un groupe d'instances, soumettez une nouvelle demande de reconfiguration excluant la configuration précédente.
Note
Vous pouvez uniquement remplacer la configuration de cluster initiale. Vous ne pouvez pas la supprimer.
Par exemple, pour supprimer la configuration du vérificateur de santé du NodeManager disque YARN de l'exemple précédent, soumettez-en une nouvelle instanceGroups.json
avec le contenu suivant.
[ { "InstanceGroupId":"
<ig-1xxxxxxx9>
", "Configurations":[ { "Classification":"yarn-site", "Properties":{ "yarn.nodemanager.vmem-check-enabled":"true", "yarn.nodemanager.vmem-pmem-ratio":"3.0" }, "Configurations":[] } ] } ]
Note
Pour supprimer toutes les configurations de votre dernière demande de reconfiguration, soumettez une demande de reconfiguration avec un ensemble de configurations vide. Par exemple,
[ { "InstanceGroupId":"
<ig-1xxxxxxx9>
", "Configurations":[] } ]
Exemple – Reconfigurez et redimensionnez un groupe d'instances en une seule demande
L'exemple JSON suivant montre comment reconfigurer et redimensionner un groupe d'instances dans la même demande.
[ { "InstanceGroupId":"
<ig-1xxxxxxx9>
", "InstanceCount":5, "EC2InstanceIdsToTerminate":["i-123"], "ForceShutdown":true, "ShrinkPolicy":{ "DecommissionTimeout":10, "InstanceResizePolicy":{ "InstancesToTerminate":["i-123"], "InstancesToProtect":["i-345"], "InstanceTerminationTimeout":20 } }, "Configurations":[ { "Classification":"yarn-site", "Configurations":[], "Properties":{ "yarn.nodemanager.disk-health-checker.enable":"true", "yarn.nodemanager.disk-health-checker.max-disk-utilization-per-disk-percentage":"100.0" } } ] } ]
Reconfigurer un groupe d'instances à l'aide du SDK Java
Note
Dans les exemples suivants, remplacez <j-2AL4XXXXXX5T9>
par votre ID de cluster et remplacez <ig-1xxxxxxx9>
par votre ID de groupe d'instances.
L'extrait de code suivant fournit une nouvelle configuration pour un groupe d'instances utilisant AWS SDK for Java.
AWSCredentials credentials = new BasicAWSCredentials("access-key", "secret-key"); AmazonElasticMapReduce emr = new AmazonElasticMapReduceClient(credentials); Map<String,String> hiveProperties = new HashMap<String,String>(); hiveProperties.put("hive.join.emit.interval","1000"); hiveProperties.put("hive.merge.mapfiles","true"); Configuration configuration = new Configuration() .withClassification("hive-site") .withProperties(hiveProperties); InstanceGroupModifyConfig igConfig = new InstanceGroupModifyConfig() .withInstanceGroupId("
<ig-1xxxxxxx9>
") .withReconfigurationType("MERGE"); .withConfigurations(configuration); ModifyInstanceGroupsRequest migRequest = new ModifyInstanceGroupsRequest() .withClusterId("<j-2AL4XXXXXX5T9>") .withInstanceGroups(igConfig); emr.modifyInstanceGroups(migRequest);
L'extrait de code suivant supprime une configuration précédemment spécifiée pour un groupe d'instances en fournissant un tableau vide de configurations.
List<Configuration> configurations = new ArrayList<Configuration>(); InstanceGroupModifyConfig igConfig = new InstanceGroupModifyConfig() .withInstanceGroupId("
<ig-1xxxxxxx9>
") .withConfigurations(configurations); ModifyInstanceGroupsRequest migRequest = new ModifyInstanceGroupsRequest() .withClusterId("<j-2AL4XXXXXX5T9>
") .withInstanceGroups(igConfig); emr.modifyInstanceGroups(migRequest);
Résoudre les problèmes de reconfiguration des groupes d'instances
Si le processus de reconfiguration d'un groupe d'instances échoue, Amazon EMR annule la reconfiguration et enregistre un message d'échec à l'aide d'un événement Amazon. CloudWatch L'événement fournit un bref résumé de l'échec de la reconfiguration. Il répertorie les instances pour lesquelles la reconfiguration a échoué et les messages d'échec correspondants. Voici un exemple de message d'échec.
The reconfiguration operation for instance group
ig-1xxxxxxx9
in Amazon EMR clusterj-2AL4XXXXXX5T9
(ExampleClusterName) failed at 2021-01-01 00:00 UTC and took 2 minutes to fail. Failed configuration version isexample12345
. Failure message: Instancei-xxxxxxx1
,i-xxxxxxx2
,i-xxxxxxx3
failed with message "This is an example failure message".
Pour recueillir davantage de données sur un échec de reconfiguration, vous pouvez consulter les journaux de provisionnement des nœuds. Cela est particulièrement utile lorsque vous recevez un message comme celui-ci.
i-xxxxxxx1
failed with message “Unable to complete transaction and some changes were applied.”
Chaque fichier journal contient un rapport de provisionnement détaillé pour la reconfiguration associée. Pour trouver les informations relatives aux messages d'erreur, vous pouvez rechercher le niveau de journalisation err
d'un rapport. Le format du rapport dépend de la version d'Amazon EMR de votre cluster.
L'exemple suivant montre les informations d'erreur pour les versions d'Amazon EMR antérieures aux versions 5.32.0 et 6.2.0.
- !ruby/object:Puppet::Util::Log
level: !ruby/sym err
tags:
- err
message: "Example detailed error message."
source: Puppet
time: 2021-01-01 00:00:00.000000 +00:00
Les versions 5.32.0 et 6.2.0 et ultérieures d'Amazon EMR utilisent plutôt le format suivant.
- level: err
message: 'Example detailed error message.'
source: Puppet
tags:
- err
time: '2021-01-01 00:00:00.000000 +00:00'
file:
line: