Reconfiguration des flottes d'instances pour votre cluster Amazon EMR - 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.

Reconfiguration des flottes d'instances pour votre cluster Amazon EMR

Avec Amazon EMR version 5.21.0 et versions ultérieures, vous pouvez reconfigurer les applications de cluster et spécifier des classifications de configuration supplémentaires pour chaque parc d'instances d'un cluster en cours d'exécution. Pour ce faire, vous pouvez utiliser l'interface de ligne de AWS commande (AWS CLI) ou le AWS SDK.

Vous pouvez suivre l'état d'un parc d'instances en consultant les CloudWatch événements. Pour plus d'informations, consultez la section Événements de reconfiguration du parc d'instances.

Note

Vous pouvez uniquement remplacer l'objet Configurations du cluster spécifié lors de la création du cluster. Pour plus d'informations sur les objets de configuration, consultez la section Syntaxe des RunJobFlow demandes. 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 lorsque vous êtes connecté à votre cluster via SSH, aux valeurs par défaut du cluster pour le parc d'instances spécifié.

Lorsque vous soumettez une demande de reconfiguration à l'aide de la console Amazon EMR, de AWS l'interface de ligne de commande AWS CLI() ou AWS du SDK, Amazon EMR vérifie 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 parc d'instances spécifié.

Comportements de reconfiguration

La reconfiguration remplace la configuration du cluster par le nouvel ensemble de configuration soumis et peut remplacer les modifications de configuration effectuées en dehors de l'API de reconfiguration.

Amazon EMR suit un processus continu pour reconfigurer les instances du parc d'instances Task et Core. Seul un pourcentage des instances correspondant à un seul type d'instance est modifié et redémarré à la fois. Si votre parc d'instances comporte plusieurs configurations de type d'instance différentes, elles seront reconfigurées en parallèle.

Les reconfigurations sont déclarées au InstanceTypeConfigniveau. Pour un exemple visuel, reportez-vous àReconfigurer un parc d'instances. Vous pouvez envoyer des demandes de reconfiguration contenant des paramètres de configuration mis à jour pour un ou plusieurs types d'instances dans le cadre d'une seule demande. Vous devez inclure tous les types d'instances qui font partie de votre parc d'instances dans la demande de modification ; toutefois, les types d'instance dont les champs de configuration sont remplis seront reconfigurés, tandis que les autres InstanceTypeConfig instances du parc resteront inchangées. Une reconfiguration est considérée comme réussie uniquement lorsque toutes les instances des types d'instance spécifiés ont terminé la reconfiguration. Si une instance ne parvient pas à se reconfigurer, l'ensemble du parc d'instances revient automatiquement à sa dernière configuration stable connue.

Limites

Lorsque vous reconfigurez un parc d'instances dans un cluster en cours d'exécution, tenez compte des limites 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 parc d'instances principal. Consultez la Résoudre les problèmes de reconfiguration du parc d'instances section.

  • Les opérations de redimensionnement et de reconfiguration ne se font pas en parallèle. Les demandes de reconfiguration attendront un redimensionnement en cours et vice versa.

  • Les opérations de redimensionnement et de reconfiguration ne se font pas en parallèle. Les demandes de reconfiguration attendront un redimensionnement en cours et vice versa.

  • Après avoir reconfiguré un parc d'instances, Amazon EMR redémarre les applications pour permettre aux nouvelles configurations de prendre effet. 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 la reconfiguration d'une configuration de type d'instance dans un parc d'instances échoue, Amazon EMR rétablit les paramètres de configuration par rapport à la version opérationnelle précédente pour l'ensemble du parc d'instances, tout en émettant des événements et en mettant à jour les détails de l'état. Si le processus de réversion échoue également, vous devez envoyer une nouvelle ModifyInstanceFleet demande pour récupérer le parc d'instances auprès de l'ARRESTEDÉtat. Les échecs de réversion entraînent des événements de reconfiguration du parc d'instances et un changement d'état.

  • 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.

  • 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é YARN qui nécessitent le redémarrage du YARN. ResourceManager Par exemple, vous ne pouvez pas supprimer complètement une file d'attente.

  • Lorsque YARN doit redémarrer, toutes les tâches YARN en cours d'exécution sont généralement interrompues et perdues. Cela peut entraîner des retards dans le traitement des données. 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 principaux, soit attribuer à yarn.resourcemanager.recovery.enabled la valeur dans votre classification de configuration yarn-site. true Pour plus d'informations sur l'utilisation de plusieurs nœuds maîtres, consultez High Availability YARN ResourceManager.

Reconfigurer un parc d'instances

Using the AWS CLI

Utilisez la modify-instance-fleet commande pour spécifier une nouvelle configuration pour un parc d'instances dans un cluster en cours d'exécution.

Note

Dans les exemples suivants, remplacez j-2 AL4 XXXXXX5 T9 par votre ID de cluster et remplacez if-1xxxxxxx9 par l'ID de votre parc d'instances.

Exemple — Remplacer une configuration pour un parc d'instances

Avertissement

Spécifiez tous les InstanceTypeConfig champs que vous avez utilisés au lancement. Le fait de ne pas inclure de champs peut entraîner le remplacement des spécifications que vous avez déclarées au lancement. Reportez-vous à InstanceTypeConfigpour obtenir une liste.

L'exemple suivant fait référence à un fichier JSON de configuration appelé InstanceFleet.json pour modifier la propriété du vérificateur de santé du NodeManager disque YARN pour un parc d'instances.

Modification du parc d'instances JSON

  1. Préparez votre classification de configuration et enregistrez-la sous le nom InstanceFleet.json dans le répertoire où vous allez exécuter la commande.

    { "InstanceFleetId":"if-1xxxxxxx9", "InstanceTypeConfigs": [ { "InstanceType": "m5.xlarge", other InstanceTypeConfig fields "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" } } ] }, { "InstanceType": "r5.xlarge", other InstanceTypeConfig fields "Configurations": [ { "Classification": "yarn-site", "Properties": { "yarn.nodemanager.disk-health-checker.enable":"false", "yarn.nodemanager.disk-health-checker.max-disk-utilization-per-disk-percentage":"70.0" } } ] } ]
  2. Exécutez la commande suivante.

    aws emr modify-instance-fleet \ --cluster-id j-2AL4XXXXXX5T9 \ --region us-west-2 \ --instance-fleet instanceFleet.json

Exemple — Ajouter une configuration à un parc d'instances

Si vous souhaitez ajouter une configuration à un type d'instance, vous devez inclure toutes les configurations précédemment spécifiées pour ce type d'instance dans votre nouvelle ModifyInstanceFleet demande. 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.

  1. Préparez le contenu suivant dans InstanceFleet.json et enregistrez-le dans le répertoire où vous allez exécuter la commande.

    { "InstanceFleetId":"if-1xxxxxxx9", "InstanceTypeConfigs": [ { "InstanceType": "m5.xlarge", other InstanceTypeConfig fields "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" } } ] }, { "InstanceType": "r5.xlarge", other InstanceTypeConfig fields "Configurations": [ { "Classification": "yarn-site", "Properties": { "yarn.nodemanager.disk-health-checker.enable":"false", "yarn.nodemanager.disk-health-checker.max-disk-utilization-per-disk-percentage":"70.0" } } ] } ] }
  2. Exécutez la commande suivante.

    aws emr modify-instance-fleet \ --cluster-id j-2AL4XXXXXX5T9 \ --region us-west-2 \ --instance-fleet instanceFleet.json
using the Java SDK
Note

Dans les exemples suivants, remplacez j-2 AL4 XXXXXX5 T9 par votre ID de cluster et remplacez if-1xxxxxxx9 par l'ID de votre parc d'instances.

L'extrait de code suivant fournit une nouvelle configuration pour un parc d'instances utilisant le 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 newConfiguration = new Configuration() .withClassification("hive-site") .withProperties(hiveProperties); List<InstanceTypeConfig> instanceTypeConfigList = new ArrayList<>(); for (InstanceTypeConfig instanceTypeConfig : currentInstanceTypeConfigList) { instanceTypeConfigList.add(new InstanceTypeConfig() .withInstanceType(instanceTypeConfig.getInstanceType()) .withBidPrice(instanceTypeConfig.getBidPrice()) .withWeightedCapacity(instanceTypeConfig.getWeightedCapacity()) .withConfigurations(newConfiguration) ); } InstanceFleetModifyConfig instanceFleetModifyConfig = new InstanceFleetModifyConfig() .withInstanceFleetId("if-1xxxxxxx9") .withInstanceTypeConfigs(instanceTypeConfigList); ModifyInstanceFleetRequest modifyInstanceFleetRequest = new ModifyInstanceFleetRequest() .withInstanceFleet(instanceFleetModifyConfig) .withClusterId("j-2AL4XXXXXX5T9"); emrClient.modifyInstanceFleet(modifyInstanceFleetRequest);

Résoudre les problèmes de reconfiguration du parc d'instances

Si le processus de reconfiguration d'un type d'instance d'un parc d'instances échoue, Amazon EMR annule la reconfiguration en cours et enregistre un message d'échec à l'aide d'un événement. AAmazon 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.

Amazon EMR couldn't revert the instance fleet if-1xxxxxxx9 in the Amazon EMR cluster j-2AL4XXXXXX5T9 (ExampleClusterName) to the previously successful configuration at 2021-01-01 00:00 UTC. The reconfiguration reversion failed because of Instance i-xxxxxxx1, i-xxxxxxx2, i-xxxxxxx3 failed with message "This is an example failure message"...

Pour accéder aux journaux de provisionnement des nœuds

Utilisez SSH pour vous connecter au nœud sur lequel la reconfiguration a échoué. Pour obtenir des instructions, consultez Connect to your Linux instance in the Amazon Elastic Compute Cloud.

Accessing logs by connecting to a node
  1. Accédez au répertoire suivant, qui contient les fichiers journaux de provisionnement des nœuds.

    /mnt/var/log/provision-node/
  2. Ouvrez le sous-répertoire des rapports et recherchez le rapport de provisionnement des nœuds pour votre reconfiguration. Le répertoire des rapports organise les journaux par numéro de version de reconfiguration, identifiant unique universel (UUID), adresse IP de l' EC2 instance Amazon et horodatage. Chaque rapport est un fichier YAML compressé qui contient des informations détaillées sur le processus de reconfiguration. Vous trouverez ci-dessous un exemple de nom de fichier et de chemin d'accès.

    /reports/2/ca598xxx-cxxx-4xxx-bxxx-6dbxxxxxxxxx/ip-10-73-xxx-xxx.ec2.internal/202104061715.yaml.gz
  3. Vous pouvez examiner un rapport à l'aide d'un visualiseur de fichiers tel que zless, comme dans l'exemple suivant.

    zless 202104061715.yaml.gz
Accessing logs using Amazon S3

Connectez-vous à la console Amazon S3 AWS Management Console et ouvrez-la à l'adresse https://console.aws.amazon.com/s3/. Ouvrez le compartiment Amazon S3 que vous avez spécifié lorsque vous avez configuré le cluster pour archiver les fichiers journaux.

  1. Accédez au dossier suivant, qui contient les fichiers journaux de provisionnement des nœuds :

    amzn-s3-demo-bucket/elasticmapreduce/cluster id/node/instance id/provision-node/
  2. Ouvrez le dossier des rapports et recherchez le rapport de provisionnement des nœuds pour votre reconfiguration. Le dossier des rapports organise les journaux par numéro de version de reconfiguration, identifiant unique universel (UUID), adresse IP de l' EC2 instance Amazon et horodatage. Chaque rapport est un fichier YAML compressé qui contient des informations détaillées sur le processus de reconfiguration. Vous trouverez ci-dessous un exemple de nom de fichier et de chemin d'accès.

    /reports/2/ca598xxx-cxxx-4xxx-bxxx-6dbxxxxxxxxx/ip-10-73-xxx-xxx.ec2.internal/202104061715.yaml.gz

Pour consulter un fichier journal, vous pouvez le télécharger depuis Amazon S3 sur votre machine locale sous forme de fichier texte. Pour obtenir des instructions, consultez la section Téléchargement d'un objet.

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 5.32.0 et 6.2.0 d'Amazon EMR et les versions ultérieures utilisant 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: