Amazon EMR activé EC2  : surveillance améliorée grâce à CloudWatch l'utilisation de statistiques et de journaux personnalisés - 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.

Amazon EMR activé EC2  : surveillance améliorée grâce à CloudWatch l'utilisation de statistiques et de journaux personnalisés

Présentation

Amazon EMR fournit des fonctionnalités de traitement des mégadonnées puissantes et économiques. Pour optimiser les performances et l'utilisation des ressources, une surveillance efficace est essentielle. Amazon CloudWatch offre une observabilité complète pour les clusters EMR, ce qui vous permet de suivre les métriques et les journaux en temps réel. Ce document explique comment :

  1. Configurez l' CloudWatch agent pour envoyer l'EMR sur les journaux à EC2 CloudWatch

  2. Ajoutez Hadoop, YARN et des HBase métriques personnalisés via des classifications

  3. Surveillez les métriques grâce à des tableaux de bord intégrés

  4. Suivez les journaux du cluster via des groupes de CloudWatch journaux

Prérequis et contexte

Par défaut, Amazon EMR envoie des métriques de base CloudWatch toutes les cinq minutes sans frais supplémentaires. Avec la version 7.0+ d'EMR, vous pouvez déployer l'agent pour : CloudWatch

  • Collectez 34 indicateurs détaillés supplémentaires à intervalles d'une minute (des frais supplémentaires s'appliquent)

  • Collectez des métriques à partir de tous les nœuds du cluster

  • Agrégez les données sur le nœud principal avant de les envoyer à CloudWatch

  • Accédez aux métriques via l'onglet ou la console de surveillance de la console EMR CloudWatch

EMR 7.1 étend ces fonctionnalités, vous permettant de configurer l'agent pour capturer des métriques spécialisées provenant de Hadoop, YARN et des composants. HBase Pour les environnements utilisant Prometheus, les métriques peuvent être transmises à Amazon Managed Service for Prometheus.

CloudWatch Configuration de l'agent pour les journaux

Pour capturer les connexions EMR CloudWatch, créez un fichier cloudwatch-config.json qui définit les fichiers journaux à collecter :

cloudwatch-config.json

{ "agent": {"metrics_collection_interval":60,"logfile":"/var/log/emr-cluster-metrics/amazon-cloudwatch-agent/amazon-cloudwatch-agent.log","run_as_user":"****","omit_hostname":true}, "logs": { "logs_collected": { "files": { "collect_list": [ { "file_path": "/mnt/var/log/hadoop-yarn/hadoop-yarn-resourcemanager-*", "log_group_name": "/emr/yarn/resourcemnger", "log_stream_name": "{instance_id}", "publish_multi_logs" : true }, { "file_path": "/var/log/hadoop-hdfs/hadoop-hdfs-namenode-*", "log_group_name": "/emr/hdfs/namenode", "log_stream_name": "{instance_id}", "publish_multi_logs" : true } ] } } } }

Script Bootstrap pour la configuration de CloudWatch l'agent

Pour appliquer votre CloudWatch configuration personnalisée aux nœuds EMR, créez un script d'amorçage qui redémarrera l' CloudWatch agent avec vos paramètres. Ce script garantit que l'agent fonctionne avec vos paramètres de collecte de journaux spécifiques après le provisionnement du cluster.

Création du script Bootstrap

Créez un fichier nommé cloudwatch-agent-bootstrap.sh avec le contenu suivant :

#!/bin/bash set -xe EMR_SECONDARY_BA_SCRIPT=$(cat << 'EOF' while true; do NODEPROVISIONSTATE=$(sed -n '/localInstance [{]/,/[}]/ {/nodeProvisionCheckinRecord [{]/,/[}]/ {/status:/ p}}' /emr/instance-controller/lib/info/job-flow-state.txt | awk '{ print $2 }') if [ "$NODEPROVISIONSTATE" == "SUCCESSFUL" ]; then sleep 10 echo "Running my post provision bootstrap" NODETYPE=$(cat /mnt/var/lib/instance-controller/extraInstanceData.json | jq -r '.instanceRole' | awk '{print tolower($0)}') # Copy config file on the instance sudo aws s3 cp s3://amzn-s3-demo-bucket1>/cloudwatch-config.json /etc/emr-cluster-metrics/amazon-cloudwatch-agent/conf/emr-amazon-cloudwatch-agent.json # Stop the current agent sudo /usr/bin/amazon-cloudwatch-agent-ctl -a stop # Start the agent with the created config file sudo /usr/bin/amazon-cloudwatch-agent-ctl -a fetch-config -s -m ec2 -c file:/etc/emr-cluster-metrics/amazon-cloudwatch-agent/conf/emr-amazon-cloudwatch-agent.json # Status CW Agent echo "Status CW Agent" sudo /usr/bin/amazon-cloudwatch-agent-ctl -m ec2 -a status exit fi sleep 10 done EOF ) echo "${EMR_SECONDARY_BA_SCRIPT}" | tee -a /tmp/emr-secondary-ba.sh chmod u+x /tmp/emr-secondary-ba.sh /tmp/emr-secondary-ba.sh > /tmp/emr-secondary-ba.log 2>&1 & exit 0

Remarque importante concernant la configuration

Important

Avant de télécharger le script, remplacez-le <amzn-s3-demo-bucket1> par le nom réel du compartiment S3 dans lequel vous avez stocké le fichier cloudwatch-config.json de l'étape précédente. Cela garantit que le script bootstrap peut récupérer votre fichier de configuration lors de l'initialisation du cluster.

Ce script bootstrap permettra de :

  • Attendez que le provisionnement des nœuds soit terminé

  • Téléchargez votre CloudWatch configuration personnalisée

  • Arrêtez tout CloudWatch agent en cours d'exécution

  • Redémarrez l'agent avec votre configuration spécifique

  • Enregistrez l'état de l'agent pour le dépannage

Classifications métriques personnalisées pour Hadoop, YARN et HBase

Outre les CloudWatch métriques par défaut, vous pouvez améliorer vos capacités de surveillance en configurant des métriques personnalisées spécifiques à l'application pour les composants de votre cluster EMR. L'API de configuration d'Amazon EMR fournit un moyen flexible de définir exactement les métriques que vous souhaitez collecter.

Configuration de métriques personnalisées

Vous pouvez implémenter une collecte de mesures personnalisée de deux manières :

  • Lors de la création de clusters pour de nouveaux clusters

  • En tant que reconfiguration de clusters existants via la console EMR

Création d'un fichier de classification

Le fichier de classification définit les métriques de composants spécifiques qui doivent être collectées auprès de votre cluster. Vous trouverez ci-dessous un exemple de structure pour collecter des métriques Hadoop personnalisées :

[ { "Classification": "emr-metrics", "Configurations": [ { "Classification": "emr-hadoop-hdfs-datanode-metrics", "Properties": { "Hadoop:service=DataNode,name=DataNodeActivity-*": "DatanodeNetworkErrors,TotalReadTime,TotalWriteTime,BytesRead,BytesWritten,RemoteBytesRead,RemoteBytesWritten,ReadBlockOpNumOps,ReadBlockOpAvgTime,WriteBlockOpNumOps,WriteBlockOpAvgTime", "otel.metric.export.interval": "30000" } }, { "Classification": "emr-hadoop-yarn-nodemanager-metrics", "Properties": { "Hadoop:service=NodeManager,name=JvmMetrics": "MemNonHeapUsedM,MemNonHeapCommittedM,MemNonHeapMaxM,MemHeapUsedM,MemHeapCommittedM,MemHeapMaxM,MemMaxM", "Hadoop:service=NodeManager,name=NodeManagerMetrics": "ContainerCpuUtilization,NodeCpuUtilization,ContainersCompleted,ContainersFailed,ContainersKilled,ContainersLaunched,ContainersRolledBackOnFailure,ContainersRunning,ContainerUsedMemGB,ContainerUsedVMemGB,ContainerLaunchDurationNumOps,ContainerLaunchDurationAvgTime", "otel.metric.export.interval": "20000" } } ], "Properties": {} } ]

Étapes d’implémentation

  1. Créez un fichier JSON avec les classifications métriques souhaitées.

  2. Personnalisez les indicateurs en fonction de vos besoins en matière de surveillance.

  3. Enregistrez le fichier et chargez-le dans votre compartiment S3.

  4. Référencez ce fichier lors de la création d'un nouveau cluster ou de la reconfiguration d'un cluster existant.

Bonnes pratiques

  • Collectez uniquement les indicateurs qui fournissent des informations pertinentes pour vos charges de travail.

  • Tenez compte de l'intervalle de collecte des métriques en fonction de vos besoins de surveillance.

  • Consultez AWS la documentation pour obtenir la liste complète des mesures disponibles pour chaque composant.

  • Regroupez les métriques associées au sein d'une même classification pour une meilleure organisation.

Cette approche vous permet de concentrer votre surveillance sur les indicateurs les plus critiques pour vos applications EMR spécifiques, ce qui vous donne une meilleure visibilité sur les performances du cluster.

Déploiement d'un cluster EMR avec intégration CloudWatch

Suivez ces étapes pour créer un cluster Amazon EMR qui envoie automatiquement des journaux et des métriques personnalisées à : CloudWatch

Étape 1 : activer l' CloudWatch agent

Lorsque vous créez votre cluster EMR via la console de AWS gestion :

  1. Accédez à la section Applications lors de la création du cluster.

  2. Cochez les cases correspondant à vos applications principales (Hadoop, Spark, etc.).

  3. Faites défiler la page pour trouver et sélectionner l'option Amazon CloudWatch Agent.

  4. Cela active l'agent de votre cluster, ce qui est essentiel pour collecter des métriques et des journaux améliorés.

L' CloudWatch agent sera installé sur tous les nœuds de votre cluster, ce qui lui permettra de recueillir les métriques du système et des applications aux intervalles configurés.

Nom et applications

Bundles d'applications

Création d'un cluster et affichage des offres groupées disponibles.

Note

L' CloudWatch agent est disponible dans les versions 7.0 et ultérieures d'EMR. L'activation de ce composant est requise pour la collecte de mesures personnalisées et le transfert de journaux décrits dans ce guide.

Étape 2 : ajouter l'action Bootstrap pour la collecte de journaux

Pour configurer l' CloudWatch agent afin qu'il collecte et transfère des fichiers journaux spécifiques à CloudWatch :

  1. Dans l'assistant de création de clusters EMR, accédez à la section Bootstrap Actions

  2. Cliquez sur Ajouter une action bootstrap

  3. Sélectionnez Action personnalisée dans le menu déroulant

  4. Donnez un nom à votre action d'amorçage (par exemple, Configure CloudWatch Agent)

  5. Dans le champ Emplacement du script, entrez le chemin S3 vers votre script cloudwatch-agent-bootstrap .sh (par exemple, s3 ://your-bucket-name/cloudwatch-agent-bootstrap.sh)

  6. Cliquez sur Ajouter pour enregistrer l'action bootstrap

Cette action d'amorçage sera exécutée lors du démarrage du cluster, garantissant ainsi que CloudWatchagent celui-ci est correctement configuré avec vos paramètres personnalisés pour collecter et transférer les fichiers journaux spécifiés dans votre fichier de configuration.

L'agent commencera automatiquement à collecter les journaux une fois les nœuds approvisionnés, offrant ainsi une visibilité en temps quasi réel des opérations de votre cluster via CloudWatch les journaux.

Actions d'amorçage

Actions d'amorçage

Utilisation d'actions bootstrap.

Étape 3 : Configuration de la collecte de métriques personnalisées

Pour activer la collecte de HBase métriques Hadoop, YARN ou personnalisées au-delà de l'ensemble par défaut :

  1. Dans l'assistant de création de clusters EMR, accédez à la section Configurations.

  2. Cliquez sur le bouton Modifier les configurations pour développer les options de configuration.

  3. Sélectionnez l'option Charger le JSON depuis Amazon S3 dans la liste déroulante des méthodes de configuration.

  4. Entrez le chemin de l'URI S3 vers votre fichier de classification des métriques personnalisé (par exemple, s3://amzn-s3-demo-bucket1/ emr-metrics-classification .json).

  5. Cliquez sur Charger pour analyser la configuration.

  6. Vérifiez que la configuration apparaît correctement dans l'interface de la console.

  7. Cliquez sur Enregistrer les modifications pour appliquer ces configurations métriques à votre cluster.

Cette étape demande à l' CloudWatch agent de collecter les métriques de composants spécifiques définies dans votre fichier de classification. Les métriques seront collectées aux intervalles spécifiés dans votre configuration et publiées CloudWatch, où elles pourront être visualisées et analysées.

Les métriques personnalisées fournissent des informations plus approfondies sur les caractéristiques de performance de votre cluster, ce qui permet une surveillance et un dépannage plus précis de vos applications EMR.

Paramètres du logiciel

Paramètres du logiciel

Remplacez les configurations par défaut.

Mise à jour de la configuration des métriques pour l'exécution de clusters

Vous pouvez modifier les paramètres de collecte de mesures pour un cluster EMR existant sans perturber les opérations en suivant ces étapes :

  1. Accédez à votre cluster EMR actif dans la console de AWS gestion.

  2. Sélectionnez l'onglet Configurations dans la vue détaillée du cluster.

  3. Trouvez la section Configurations des groupes d'instances.

  4. Cliquez sur le bouton Reconfigurer pour modifier les paramètres.

  5. Choisissez Load JSON depuis Amazon S3 ou modifiez directement la configuration.

  6. Entrez l'emplacement de votre fichier de classification des métriques mis à jour ou apportez des modifications dans l'éditeur.

  7. Appliquez les modifications pour mettre à jour le comportement de collecte des métriques.

Cette fonctionnalité de reconfiguration vous permet d'affiner votre approche de surveillance en fonction de l'évolution de vos exigences en matière de charge de travail. L' CloudWatch agent s'adaptera automatiquement à la nouvelle configuration et collectera l'ensemble de métriques mis à jour sans nécessiter de redémarrage du cluster ni d'interruption de service.

Important

Les modifications de configuration peuvent prendre plusieurs minutes pour se propager sur tous les nœuds du cluster. Continuez à surveiller vos CloudWatch tableaux de bord pour vous assurer que les nouvelles statistiques apparaissent comme prévu.

Configurations de clusters

Configurations tab showing cluster and instance group settings with options to view JSON and reconfigure.

Configurations de groupes d'instances.

Validation de votre intégration CloudWatch

Une fois les étapes de configuration terminées, il est temps de vérifier que votre configuration de surveillance fonctionne correctement :

Étape 1 : Déployer votre cluster EMR

  1. Vérifiez l'exactitude de tous les paramètres de configuration.

  2. Assurez-vous que les actions bootstrap et les fichiers de classification sont correctement référencés.

  3. Cliquez sur Créer un cluster pour lancer votre environnement EMR.

  4. Attendez que le cluster atteigne l'état en cours d'exécution (généralement 5 à 15 minutes).

Étape 2 : Exécuter les applications de test

Soumettez plusieurs applications Spark de test pour générer des métriques pertinentes :

  • Exécutez une tâche Spark simple qui traite des échantillons de données.

  • Exécutez une tâche d'analyse de plus longue durée pour observer l'utilisation des ressources.

  • Testez différentes configurations d'applications pour comparer les indicateurs de performance.

Une fois vos applications terminées (ou pendant leur exécution) :

  • Accédez à la CloudWatch console.

  • Vérifiez la présence de journaux d'applications dans vos groupes de journaux configurés.

  • Examinez les tableaux de bord des métriques pour observer les métriques spécifiques au processeur, à la mémoire et aux applications.

  • Vérifiez que les métriques personnalisées définies dans votre fichier de classification apparaissent dans CloudWatch.

Ce processus de validation confirme que votre CloudWatch intégration capture correctement les journaux et les indicateurs, vous offrant ainsi une visibilité complète sur les performances et le comportement des applications de votre cluster EMR.

Accès aux journaux EMR dans les groupes de CloudWatch journaux

Une fois que votre cluster EMR est en cours d'exécution et que l' CloudWatch agent est correctement configuré, les journaux de votre application et de votre système seront disponibles dans CloudWatch Logs. Pour y accéder et les analyser, procédez comme suit :

Afficher vos groupes de journaux

  1. Accédez à la CloudWatch console dans AWS Management Console.

  2. Sélectionnez Groupes de journaux dans le volet de navigation de gauche.

  3. Recherchez les groupes de journaux créés par votre configuration, tels que :

    • /emr/yarn/resourcemngerpour les ResourceManager journaux YARN.

    • /emr/hdfs/namenodepour les NameNode journaux HDFS.

    • Tous les groupes de journaux supplémentaires spécifiés dans votre fichier de configuration.

Chaque groupe de journaux contient des flux de journaux organisés par ID d'instance, ce qui vous permet de suivre les journaux jusqu'à des nœuds spécifiques de votre cluster.

Utilisation des données du journal

  • Données du journal de recherche : utilisez CloudWatch Logs Insights pour effectuer des requêtes structurées dans vos groupes de journaux.

  • Création de métriques : extrayez les métriques des modèles de log pour créer des CloudWatch métriques personnalisées.

  • Définir des alertes : configurez les alarmes en fonction de modèles d'erreur ou de fréquences de journalisation spécifiques.

  • Exporter les journaux : téléchargez les journaux pour les analyser ou les archiver hors ligne.

Conservation de journal

Note

Par défaut, les journaux sont conservés pendant 30 jours. Vous pouvez modifier la politique de conservation de chaque groupe de journaux afin de conserver les journaux pendant de plus longues périodes si cela est nécessaire à des fins de conformité ou d'analyse.

CloudWatch Logs fournit un emplacement centralisé pour toutes les données de vos journaux EMR, éliminant ainsi le besoin de se connecter en SSH à des nœuds de cluster individuels pour résoudre les problèmes ou analyser le comportement des applications.

Afficher les métriques personnalisées dans le tableau de bord de surveillance EMR

Une fois que votre cluster EMR est exécuté avec l' CloudWatch agent et la configuration des métriques personnalisées, vous pouvez facilement surveiller ces métriques directement dans la console EMR :

Accès à vos métriques personnalisées

  1. Accédez à votre cluster EMR dans la console de AWS gestion.

  2. Sélectionnez l'onglet Surveillance sur la page de détails du cluster.

  3. Localisez le menu déroulant Filtrer la classification des métriques en haut des tableaux de bord de surveillance.

  4. Utilisez ce filtre pour sélectionner des catégories de mesures spécifiques :

    • Choisissez HDFS à afficher NameNode et les DataNode métriques.

    • Sélectionnez YARN pour voir ResourceManager les métriques du conteneur.

    • Choisissez HBasedes données HBase de performance spécifiques.

    • Sélectionnez les classifications métriques personnalisées que vous avez définies.

Le tableau de bord sera mis à jour de manière dynamique pour afficher des graphiques correspondant aux mesures que vous avez sélectionnées, indiquant les tendances des performances au fil du temps.

Utilisation de visualisations métriques

  • Ajuster les plages temporelles : modifiez la fenêtre horaire pour afficher l'activité récente ou les tendances historiques.

  • Comparer les mesures : affichez plusieurs mesures connexes side-by-side pour une analyse de corrélation.

  • Fonctionnalités de zoom : concentrez-vous sur des périodes spécifiques où des anomalies ou des modèles apparaissent.

  • Actualiser les données : mettez à jour les visualisations avec les dernières données métriques en temps quasi réel.

Cette approche de surveillance intégrée vous permet de suivre à la fois les mesures EMR standard et vos mesures personnalisées dans un tableau de bord unifié, ce qui facilite l'identification des problèmes de performance, des contraintes de ressources ou des goulots d'étranglement des applications sans quitter la console EMR.

CloudWatch métriques

EMR cluster monitoring dashboard showing CloudWatch metrics and filter options.

Classification des métriques de filtrage.